/* * Author: Leng_que * Date: 2009年11月14日 * E-mail: leng_que@yahoo.com.cn * Description: 发送端 —— UDP编程 */ #include <stdio.h> #include <Winsock2.h> #pragma comment(lib, "Ws2_32.lib") int main(void) { const char buf[]="这是通过UDP发送给你的数据哦"; int sockaddr_len = sizeof(struct sockaddr); struct sockaddr_in IP={0}; IP.sin_family = AF_INET; IP.sin_port = htons(8888); IP.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); SOCKET s = INVALID_SOCKET; WSADATA wsa={0}; int ret = WSAStartup(MAKEWORD(2,0), &wsa); if ( !ret ) { s = socket(AF_INET, SOCK_DGRAM,0); if ( s != INVALID_SOCKET ) { int len = sendto(s, buf, strlen(buf), 0, (struct sockaddr*)&IP, sizeof(struct sockaddr)); printf("共发出%dbyte的数据包,内容为:%s/r/n", len,buf); } } if ( s != INVALID_SOCKET ) { closesocket(s); s = INVALID_SOCKET; } if ( !ret ) { WSACleanup(); } getchar(); return 0; } /* * Author: Leng_que * Date: 2009年11月14日 * E-mail: leng_que@yahoo.com.cn * Description: 接收端 —— UDP编程 */ #include <stdio.h> #include <Winsock2.h> #pragma comment(lib, "Ws2_32.lib") int main(void) { char buf[32]={0}; int sockaddr_len = sizeof(struct sockaddr); struct sockaddr_in senderAddr; struct sockaddr_in IP={0}; IP.sin_family = AF_INET; IP.sin_port = htons(8888); IP.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); SOCKET s = INVALID_SOCKET; WSADATA wsa={0}; int ret = WSAStartup(MAKEWORD(2,0), &wsa); if ( !ret ) { s = socket(AF_INET, SOCK_DGRAM,0); if ( s != INVALID_SOCKET ) { if (!bind(s, (struct sockaddr*)&IP, sockaddr_len)) { printf("正在等待接收数据……/r/n"); int len = recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*)&senderAddr, &sockaddr_len); printf("接收到主机%s发来的%dByte数据包,内容为:%s/r/n", inet_ntoa(senderAddr.sin_addr),len,buf); } } } if ( s != INVALID_SOCKET ) { closesocket(s); s = INVALID_SOCKET; } if ( !ret ) { WSACleanup(); } getchar(); return 0; }