服务端:
- R$ ?: z# O# A# _8 ]#include <sys/types.h>
4 ~1 |: f3 g3 K+ z7 Z% x
#include <sys/socket.h>
) j- z. u3 ?# d; o5 d& A#include <netinet/in.h>
- m/ K2 |+ k1 q#include <string.h>
2 L `4 s5 T4 j6 F1 K
#include <stdio.h>
: F3 D) [/ E' @. s * P0 ^5 {% [; A
#define SERVER_PORT 8888
- \% k: }+ l; c% l/ d4 \#define DATASIZE 100
. ^" z, [/ d& D
, l7 Q2 n1 [. X! _' Q. S& Q2 X; ?
void udps_respon(int sockfd)
8 G+ n% [# v9 J" ?9 o
{
7 y1 T/ z2 y2 o8 X+ Y- X
int n;
i! _; c+ e2 z& [( b% Q int addrlen;
* [# H- U5 R- G T' p' K, f# D char recvbuf[DATASIZE];
8 M& D$ c' Y% S; x
char* sendbuf;
5 I' u! `. x" N! p; a char* client_ip;
8 |6 j! t, p( {" k% f struct sockaddr_in client_addr;
0 S, _' d" C% T7 ]4 n" T9 F
/ |; Y+ d9 n1 d6 {) N' e0 x
n=recvfrom(sockfd,recvbuf,DATASIZE,0,(struct sockaddr*)&client_addr,&addrlen);
: f9 P$ I5 ~% N8 a9 A5 a& H recvbuf[n]='\0';
! d2 v% r) z* Q
client_ip=inet_ntoa(client_addr.sin_addr);
- f& ]% O7 I3 M printf("I recieved data from:'%s'.\n",client_ip);
. E' p; W2 i3 s printf("I have received '%s'.\n",recvbuf);
8 H# [* u; X1 S& b, f sendbuf="OK! You did a good job!!";
, d* j7 q9 [* G1 l& V2 x n=strlen(sendbuf);
) Y( G$ c+ t! l; g9 a sendto(sockfd,sendbuf,n,0,(struct sockaddr*)&client_addr,addrlen);
4 ^& y* Z+ f9 Y6 J. d3 t; Y+ i}
+ W+ U6 F6 c# R6 y
2 D4 l' D4 ~( Y( S- D/ l
int main(void)
& t) |5 g9 N2 U m6 ?8 A) R8 u \. p F{
2 u/ K7 d; l8 D; F int sockfd;
3 K2 G5 a& t. Y& r0 T2 Q
struct sockaddr_in server_addr;
; I9 i5 | l1 y0 _ if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
4 X1 {9 H. |$ {
{
8 v5 n- m2 U1 a0 A( O) r- p3 C
printf("Socket Error.\n");
' N9 t* b( } {& c$ Y$ k2 a exit(1);
* O8 S# l3 Q# t, s
}
, a. D7 N: m! N bzero(&server_addr,sizeof(struct sockaddr_in));
. u! n- K6 k! ~
server_addr.sin_family=AF_INET;
+ ]0 h2 V3 Q; B$ ^% R/ S server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
. H/ C+ Y; ]/ N! L8 U4 _
server_addr.sin_port=htons(SERVER_PORT);
! @6 ]- ~# G3 z0 B. Y5 c0 n
if(bind(sockfd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr_in))<0 )
9 ~ ~+ D7 r: g! x
{
/ T) L' X2 q& R# w( ?' S2 o
printf("Bind Error.\n");
& z$ |* o- ^, B" |; F exit(1);
$ p* Z2 g8 a) l }
& Z8 o, c8 k. m: y# @9 g E
# l1 T4 B6 J+ B! _
udps_respon(sockfd);
1 W9 ]7 p5 ~" y3 V8 a5 b1 U' [ close(sockfd);
/ T; w( Q3 F+ X$ P. Z}
( m7 d" y! X4 |: C2 ]% E
0 K( H; S1 @2 ?2 q. G
( k" d/ |% b% z$ A O客户端:
% @: z$ x* U0 F9 k7 P- Z+ P#include <sys/types.h>
2 B5 |' a# r0 f9 e0 D
#include <sys/socket.h>
8 L( Y9 G3 X+ r& y" q) G" B#include <netinet/in.h>
4 D+ J7 ^4 \: E1 @! D& r
#include <string.h>
5 _3 _3 t* h; ~4 ^* R; V1 d#include <stdio.h>
( F: Y0 e! _* K& S3 \8 b#include <unistd.h>
$ S/ R! x' S+ ~& \! i
- ^1 x( _, B( \( d; ^
#define IPADDR "255.255.255.255"
6 n5 P ]# W" R4 C#define PORT 8888
6 ], G' L2 ^! v# h2 T#define DATASIZE 100
% y. B/ S, y, [$ w$ U. j) {
% g8 t% N, Y) {4 k
void udpc_requ(int sockfd,const struct sockaddr_in *server_addr,int addrlen)
" X2 J1 \* u8 j" w" r3 D3 q
{
8 V) ^$ a, Y9 [0 J; ^ int n;
. O1 v' v' n T3 l i. n4 ~# r
int server_addrlen;
) M/ @0 V5 U: `5 ]: x
char sendbuf[DATASIZE];
5 e1 P+ p G' B& s% H# t5 R
char recvbuf[DATASIZE];
# N H) e! U" e' F: H e char* server_ip;
/ ^8 v) t/ R9 A( @, u6 K. \
struct sockaddr_in server;
9 |+ J8 P, i0 Z# O' N* F1 J
# G$ w" N3 f- O* G, Y0 M
printf("

lease input string:");
( S% H) V, C ~$ @% X2 _; ` fgets(sendbuf,DATASIZE,stdin);
3 {0 ?/ y1 Z% O sendto(sockfd,sendbuf,strlen(sendbuf)-1,0,server_addr,addrlen);
' g; |5 ], l6 h+ L
printf("I have send: %s",sendbuf);
. |5 e) f5 R! R4 E3 z2 _
n=recvfrom(sockfd,recvbuf,DATASIZE,0,(struct sockaddr *)&server,&server_addrlen);
1 h5 I7 ^: E4 ~" Y" L8 p F0 | recvbuf[n]='\0';
* @6 i4 {! x4 y3 w% n: _( ]( ] server_ip=inet_ntoa(server.sin_addr);
( { F" @" [. I7 Y" U5 `' E
printf("I have recieved data from:%s.\n",server_ip);
9 s5 M0 c# A/ W! _/ F& s printf("I have recieved:'%s'.\n",recvbuf);
: r1 }. F6 a0 B- s! l, B( f/ `- @3 o4 I* \}
5 V1 n3 |( \( j% n) p0 Z; ]
/ f) k4 K( l3 b: V1 V6 g- B. wint main()
8 F+ R, k3 v# v
{
/ i/ b; W1 v& p( H
int sockfd;
. n6 e1 _, Z* r! i$ f struct sockaddr_in addr;
) U. ?' y! i& r0 E; T
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
5 {; g8 h/ M/ V
{
! c8 s S2 r/ ?) p5 l printf("Socket Error.\n");
4 }3 g3 P9 Y# L" V/ e, _ exit(1);
H1 o' u& F1 i }
4 P4 N* E% f w$ z' j, H' g/ G
+ I; P# Z: q: k bzero(&addr,sizeof(struct sockaddr_in));
4 u; ]! p, ]5 A; r4 J& ~4 s7 ~ addr.sin_family=AF_INET;
5 G9 n; x! j. E h$ r
addr.sin_port=htons(PORT);
- g& E' L/ [. @- w- J* ~* U
if(inet_aton(IPADDR,&addr.sin_addr)<0)
/ Z) y, Y* k9 O4 d; D; I# A, W
{
( F% U* d3 x$ g- [9 V0 v printf("IPADDR error.\n");
1 B" o# x# y' g$ ?' I
exit(1);
( V# n6 H% E, G9 x }
4 \" S# S1 I" o
udpc_requ(sockfd,&addr,sizeof(struct sockaddr_in));
% u; ^( H8 v, _; v0 R; V) e close(sockfd);
* J- q. o/ V$ S5 Y1 ^}
* D R$ q( q3 X: F, ]
! F8 |3 {) A% [# P8 D9 j; p****************************************************************************************************
9 T+ u5 t& N1 P! H' e* Z( S
客户端定义发送消息的ip地址为:255.255.255.255 广播地址,为什么服务端收不到信号?
. z- x0 o# l8 W# x3 u8 j% e, |( j! i小弟初学网络编程,还请各位大牛指教.