BSDSocket编程之UDP
来源:互联网 发布:list数据排序 编辑:程序博客网 时间:2024/06/06 09:44
原文地址:http://www.1000phone.net/thread-7783-1-5.html
UDPClient
/*UDP/IP应用编程接口(API)*//**客户端的工作流程:首先调用socket函数创建一个Socket,填写服务器地址及端口号,*从标准输入设备中取得字符串,将字符串传送给服务器端,并接收服务器端返回的字*符串。最后关闭该socket。*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>int GetServerAddr(char * addrname){ printf("please input server addr:"); scanf("%s",addrname); return 1;}int main(int argc,char **argv){ int cli_sockfd; int len; socklen_t addrlen; char seraddr[14]; struct sockaddr_in cli_addr; char buffer[256]; GetServerAddr(seraddr); /* 建立socket*/ cli_sockfd=socket(AF_INET,SOCK_DGRAM,0); if(cli_sockfd<0) { printf("I cannot socket success\n"); return 1; } /* 填写sockaddr_in*/ addrlen=sizeof(struct sockaddr_in); bzero(&cli_addr,addrlen); cli_addr.sin_family=AF_INET; cli_addr.sin_addr.s_addr=inet_addr(seraddr); //cli_addr.sin_addr.s_addr=htonl(INADDR_ANY); cli_addr.sin_port=htons(SERVER_PORT); bzero(buffer,sizeof(buffer)); /* 从标准输入设备取得字符串*/ len=read(STDIN_FILENO,buffer,sizeof(buffer)); /* 将字符串传送给server端*/ sendto(cli_sockfd,buffer,len,0,(struct sockaddr*)&cli_addr,addrlen); /* 接收server端返回的字符串*/ len=recvfrom(cli_sockfd,buffer,sizeof(buffer),0,(struct sockaddr*)&cli_addr,&addrlen); //printf("receive from %s\n",inet_ntoa(cli_addr.sin_addr)); printf("receive: %s",buffer); close(cli_sockfd);}
UDPServer
/*UDP/IP应用编程接口(API)*//**服务器的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机*地址以及一个本地端口号绑定,接收到一个客户端时,服务器显示该客户端的IP地址,并将字串*返回给客户端。*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>int main(int argc,char **argv){ int ser_sockfd; int len; //int addrlen; socklen_t addrlen; char seraddr[100]; struct sockaddr_in ser_addr; /*建立socket*/ ser_sockfd=socket(AF_INET,SOCK_DGRAM,0); if(ser_sockfd<0) { printf("I cannot socket success\n"); return 1; } /*填写sockaddr_in 结构*/ addrlen=sizeof(struct sockaddr_in); bzero(&ser_addr,addrlen); ser_addr.sin_family=AF_INET; ser_addr.sin_addr.s_addr=htonl(INADDR_ANY); ser_addr.sin_port=htons(SERVER_PORT); /*绑定客户端*/ if(bind(ser_sockfd,(struct sockaddr *)&ser_addr,addrlen)<0) { printf("connect"); return 1; } while(1) { bzero(seraddr,sizeof(seraddr)); len=recvfrom(ser_sockfd,seraddr,sizeof(seraddr),0,(struct sockaddr*)&ser_addr,&addrlen); /*显示client端的网络地址*/ printf("receive from %s\n",inet_ntoa(ser_addr.sin_addr)); /*显示客户端发来的字串*/ printf("recevce:%s",seraddr); /*将字串返回给client端*/ sendto(ser_sockfd,seraddr,len,0,(struct sockaddr*)&ser_addr,addrlen); }}
- BSDSocket编程之UDP
- BSDSocket编程之UDP
- BSDSocket
- 网络编程之udp
- 网络编程之UDP
- QT之UDP编程
- C#之UDP编程
- 网络编程之UDP
- 网络编程之udp
- java 之UDP编程
- 网络编程之 UDP
- Android之UDP编程
- 网络编程之UDP编程
- java网络编程之UDP
- java网络编程之UDP
- 网络编程之UDP服务器
- 网络编程之UDP客户端
- linux c编程之UDP
- 经典算法研究系列:九、图像特征提取与匹配之SIFT算法
- opengl 坐标测试
- C语言的那些事——数学分段函数
- 东子集成1
- Android中如何使用WIFI来连接ADB
- BSDSocket编程之UDP
- linux debugfs
- MySql存储过程—7、游标(Cursor)
- 个人面试经验分享
- 数字图像处理领域的二十四个典型算法及vc实现
- 展讯平台tp和lcd驱动调试笔记
- python实现电影文件名批量更新
- android的AsyncTask类
- 计算机视觉方面的公司-转载