Winsocket UDP Client and Server Examples
来源:互联网 发布:网络重置怎么弄 编辑:程序博客网 时间:2024/06/08 06:08
/* Simple UDP Server Silver Moon ( m00n.silv3r@gmail.com )*/ #include<stdio.h>#include<winsock2.h> #pragma comment(lib,"ws2_32.lib") //Winsock Library #define BUFLEN 512 //Max length of buffer#define PORT 8888 //The port on which to listen for incoming data int main(){ SOCKET s; struct sockaddr_in server, si_other; int slen , recv_len; char buf[BUFLEN]; WSADATA wsa; slen = sizeof(si_other) ; //Initialise winsock printf("\nInitialising Winsock..."); if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) { printf("Failed. Error Code : %d",WSAGetLastError()); exit(EXIT_FAILURE); } printf("Initialised.\n"); //Create a socket if((s = socket(AF_INET , SOCK_DGRAM , 0 )) == INVALID_SOCKET) { printf("Could not create socket : %d" , WSAGetLastError()); } printf("Socket created.\n"); //Prepare the sockaddr_in structure server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons( PORT ); //Bind if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR) { printf("Bind failed with error code : %d" , WSAGetLastError()); exit(EXIT_FAILURE); } puts("Bind done"); //keep listening for data while(1) { printf("Waiting for data..."); fflush(stdout); //clear the buffer by filling null, it might have previously received data memset(buf,'\0', BUFLEN); //try to receive some data, this is a blocking call if ((recv_len = recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen)) == SOCKET_ERROR) { printf("recvfrom() failed with error code : %d" , WSAGetLastError()); exit(EXIT_FAILURE); } //print details of the client/peer and the data received printf("Received packet from %s:%d\n", inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port)); printf("Data: %s\n" , buf); //now reply the client with the same data if (sendto(s, buf, recv_len, 0, (struct sockaddr*) &si_other, slen) == SOCKET_ERROR) { printf("sendto() failed with error code : %d" , WSAGetLastError()); exit(EXIT_FAILURE); } } closesocket(s); WSACleanup(); return 0;}
/* Simple udp client Silver Moon (m00n.silv3r@gmail.com)*/#include<stdio.h>#include<winsock2.h> #pragma comment(lib,"ws2_32.lib") //Winsock Library #define SERVER "127.0.0.1" //ip address of udp server#define BUFLEN 512 //Max length of buffer#define PORT 8888 //The port on which to listen for incoming data int main(void){ struct sockaddr_in si_other; int s, slen=sizeof(si_other); char buf[BUFLEN]; char message[BUFLEN]; WSADATA wsa; //Initialise winsock printf("\nInitialising Winsock..."); if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) { printf("Failed. Error Code : %d",WSAGetLastError()); exit(EXIT_FAILURE); } printf("Initialised.\n"); //create socket if ( (s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SOCKET_ERROR) { printf("socket() failed with error code : %d" , WSAGetLastError()); exit(EXIT_FAILURE); } //setup address structure memset((char *) &si_other, 0, sizeof(si_other)); si_other.sin_family = AF_INET; si_other.sin_port = htons(PORT); si_other.sin_addr.S_un.S_addr = inet_addr(SERVER); //start communication while(1) { printf("Enter message : "); gets(message); //send the message if (sendto(s, message, strlen(message) , 0 , (struct sockaddr *) &si_other, slen) == SOCKET_ERROR) { printf("sendto() failed with error code : %d" , WSAGetLastError()); exit(EXIT_FAILURE); } //receive a reply and print it //clear the buffer by filling null, it might have previously received data memset(buf,'\0', BUFLEN); //try to receive some data, this is a blocking call if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen) == SOCKET_ERROR) { printf("recvfrom() failed with error code : %d" , WSAGetLastError()); exit(EXIT_FAILURE); } puts(buf); } closesocket(s); WSACleanup(); return 0;}
如果出现
undefined reference to `__imp_WSACleanup'
之类的错误,可以在编译环境中加上一句
-l"ws2_32"
然后就可以先运行server,再运行client,观察程序现象了。
0 0
- Winsocket UDP Client and Server Examples
- Simple OAuth Client and Server Examples
- Simple UDP server and client
- Python UDP Server and Client
- Winsocket Server/Client 基本配置
- ToyProgram UDP server and client with IOStream
- Python UDP Server Client
- UDP server,client 代码
- UDP Server/Client
- Linux UDP Server and Client Sample.Linux 下 UDP 服务和客户端程序示例
- Winsocket 一:单线程阻塞server&client程序(tcp)
- Winsocket 三:非阻塞server&client程序(tcp)
- UDP Client Server Echo Example
- JAVA UDP Server/Client Sample
- 简单 TCP UDP server client
- python实现udp Server/Client
- UDP Client《——》UDP Server
- svn client and server
- 设计模式第一弹
- [Django模板系统]方法调用与无效变量处理
- 我的第一天博客!
- UITextView添加背景图片
- Laurenty and Shop(前序和,后序和的应用)
- Winsocket UDP Client and Server Examples
- Sqlite 数据库恢复工具
- OC基础-单例设计模式
- jw player,播mp4很好用,播swf功能不全!!!
- go学习笔记
- IO流的使用(一)
- 敏捷看板的递进
- C++STL之multimap多重映照容器
- 贡献30本经典Linux学习和开发教程和资料,都是pdf完整版的