C socket TCP/UDP client/server example codes
来源:互联网 发布:php curl 设置编码 编辑:程序博客网 时间:2024/05/01 05:45
TCP Client:
#include <winsock2.h>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")int main(int argc, char* argv[]){WORD sockVersion = MAKEWORD(2,2);WSADATA data; if(WSAStartup(sockVersion, &data) != 0){return 0;}int sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(sclient == INVALID_SOCKET){printf("invalid socket !");return 0;}struct sockaddr_in serAddr;serAddr.sin_family = AF_INET;serAddr.sin_port = htons(8888);serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if (connect(sclient, (struct sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR){printf("connect error !");closesocket(sclient);return 0;}char * sendData = "你好,TCP服务端,我是客户端!\n";send(sclient, sendData, strlen(sendData), 0);char recData[255];int ret = recv(sclient, recData, 255, 0);if(ret > 0){recData[ret] = 0x00;printf(recData);}closesocket(sclient);WSACleanup();return 0;}
TCP server:
#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")int main(int argc, char* argv[]){//初始化WSAWORD sockVersion = MAKEWORD(2,2);WSADATA wsaData;if(WSAStartup(sockVersion, &wsaData)!=0){return 0;}//创建套接字SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(slisten == INVALID_SOCKET){printf("socket error !");return 0;}//绑定IP和端口sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = INADDR_ANY; if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR){printf("bind error !");}//开始监听if(listen(slisten, 5) == SOCKET_ERROR){printf("listen error !");return 0;}//循环接收数据SOCKET sClient;sockaddr_in remoteAddr;int nAddrlen = sizeof(remoteAddr);char revData[255]; while (true){printf("等待连接...\n");sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);if(sClient == INVALID_SOCKET){printf("accept error !");continue;}printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));//接收数据int ret = recv(sClient, revData, 255, 0);if(ret > 0){revData[ret] = 0x00;printf(revData);}//发送数据char * sendData = "你好,TCP客户端!\n";send(sClient, sendData, strlen(sendData), 0);closesocket(sClient);}closesocket(slisten);WSACleanup();return 0;}
UDP client:
/* 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;}
UDP server:
/* Simple UDP Server*/ #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 TCP:SOCK_STREAM UDP:SOCK_DGRAM 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;}
参考网站:
http://www.binarytides.com/udp-socket-programming-in-winsock/
http://www.tenouk.com/Winsock/Winsock2example9.html
0 0
- C socket TCP/UDP client/server example codes
- UDP Client Server Echo Example
- Simple TCP Server Client Socket C
- 5-TCP Client&Server Example
- TCP Socket Server Client
- 简单 TCP UDP server client
- PHP TCP / UDP Network Client Class (w/ Example)
- C Socket Programming for Linux with a Server and Client Example Code
- Scoket 多线程范例 TCP UDP Server Client
- 基于TCP/UDP的Server-Client
- socket server.c & client.c
- 简单的socket UDP Client Server通信
- C Socket Programming server client
- socket——tcp-nonblocking-server-client
- Simple TCP Socket Client and Server Communication in C Under Linux
- Unity: C# TCP Client Server TcpListener NetworkStream UDP
- Socket编程(TCP/UDP) - 初学(C语言)
- Linux下的socket协议UDP Client/Server程序
- 冒泡排序
- WM_PAINT与WM_ERASEBKGND补充
- Android读书笔记------View动画(2)
- EditText的使用方法详解
- UESTC OJ1221(DFS)
- C socket TCP/UDP client/server example codes
- 2015 长春、沈阳区域赛总结
- 解决MAC ssh本地断开后启动的服务会停止的问题
- switch跳转表分析
- 通知——Notification
- 10003---使用jQuery实现Ajax
- LeetCode:Rotate Array
- Effective Objective-C 2.0 第11条:理解objc_msgSend的作用
- 文件加密程序