UDP 服务端:
#include <sys/socket.h>
#include <sys/unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFERSIZE 1024
int main( int argc, char* argv[] )
{
if( argc <= 2 )
{
printf( "usage: %s ip_address port_number \n", basename( argv[0] ) );
return 1;
}
const char* ip = argv[1];
int port = atoi( argv[2] );
int sockfd;
struct sockaddr_in server_addr;
sockfd = socket( AF_INET, SOCK_DGRAM, 0 );
if( sockfd == -1 )
{
printf("create sock failed\n");
return -1;
}
bzero( &server_addr, sizeof(server_addr) );
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(port);
//server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
inet_pton( AF_INET, ip, &server_addr.sin_addr );
if( bind( sockfd, (struct sockaddr *)(&server_addr), sizeof( struct sockaddr_in ) ) == -1 )
{
printf( "bind failed\n" );
return -1;
}
struct sockaddr_in client_addr;
socklen_t client_addrlen;
int nbytes;
char buf[BUFFERSIZE];
client_addrlen = sizeof( struct sockaddr );
while(1)
{
bzero( buf, BUFFERSIZE );
nbytes = recvfrom( sockfd, buf, BUFFERSIZE , 0, ( struct sockaddr* )( &client_addr ), &client_addrlen );
buf[nbytes]= '\0';
printf( "Server received:%s\n", buf );
}
close(sockfd);
return 0;
}
UDP客户端:
#include <sys/socket.h>
#include <sys/unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFERSIZE 1024
int main( int argc,char *argv[] )
{
int sockfd;
struct sockaddr_in server_addr;
if( argc <= 2 )
{
printf("Arguments error usage: %s ip_address port_number\n", basename( argv[0] ) );
return -1;
}
int port = atoi( argv[2] );
sockfd = socket( AF_INET, SOCK_DGRAM, 0 );
if( sockfd == -1 )
{
printf("create sock failed\n");
return -1;
}
bzero( &server_addr, sizeof( server_addr ) );
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons( port );
if( inet_aton( argv[1], &(server_addr.sin_addr)) < 0 )
{
printf("transmit error\n");
return -1;
}
char buf[BUFFERSIZE];
socklen_t addrlen = sizeof(struct sockaddr);
while( 1 )
{
printf("please input what you want to say:\n");
fgets( buf, BUFFERSIZE, stdin );
sendto( sockfd, buf, BUFFERSIZE, 0, (struct sockaddr *)&server_addr, addrlen );
bzero( buf, BUFFERSIZE );
}
close(sockfd);
return 0;
}