udp服务端和客户端程序示例
2015-07-07 23:02
666 查看
UDP 服务端:
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; }
相关文章推荐
- 2015070709 - 挑战更换
- 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!
- shell中${}的妙用
- poj1573 模拟
- linux中描述符和标准IO流对文件的基本操作
- Spring学习(15)--- 基于Java类的配置Bean 之 @Bean & @Scope 注解
- hdu 2571 命运
- js的数组ECMAScript 5加入的方法(二)
- hdoj 1083 Courses【匈牙利算法】
- 通过IF({1,0}和VLOOKUP函数实现Excel的双条件多条件查找
- 每天一个linux命令(10):cat 命令
- 2015-7-3,鼠标左键下下,或者空格按下
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十七课:Cocos2D-X物理引擎之chipmunk
- switch语句:适用于一个条件有多个分支的情况---分支语句
- JSP详解
- 程序员笔试经典题目拾粹001
- vs 调试
- 2015070708 - 修正笔记
- 一个适用于层级目录结构的makefile模版
- shell join 参数详细说明