【WinSocket】WinSocket 之TCP示例
来源:互联网 发布:淘宝客源码下载 编辑:程序博客网 时间:2024/04/29 00:44
一,TCP通信过程
服务端:
socket( ) //定义socket
bind( ) //绑定本地地址和端口号
listen( ) //监听客户端请求
accept( ) //接收客户端请求
recv( ) //接收客户端数据
closesocket( )
客户端:
socket( )
connect( ) //请求连接服务器
send( ) //发送消息
closesocket( )
1)服务端:
#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")#define BUFLEN 1024int main(){SOCKET serversoc;SOCKET clientsoc;SOCKADDR_IN serveraddr;SOCKADDR_IN clientaddr;char buf[BUFLEN];int len; WSADATA wsa;WSAStartup(MAKEWORD(1,1),&wsa);//initial Ws2_32.dll by a processif((serversoc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) <= 0)//create a tcp socket{printf("Create socket fail!\n");return -1;}serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(9102);serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);if(bind(serversoc, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) != 0){printf("Bind fail!\n");return -1;}//start listen, maximum length of the queue of pending connections is 1printf("Start listen...\n");if(listen(serversoc, 1) != 0) //监听客户端的请求{printf("Listen fail!\n");return -1;}len = sizeof(SOCKADDR_IN);if((clientsoc = accept(serversoc, (SOCKADDR *)&clientaddr, &len))<=0)//接收客户端的请求{printf("Accept fail!\n");return -1;}printf("Connected\n");while(1)//打印客户端发送的消息{if(recv(clientsoc, buf, BUFLEN, 0) <= 0){//some error occurprintf("Close connection\n");closesocket(clientsoc);break;}else{printf("%s\n",buf);}}WSACleanup(); //clean up Ws2_32.dll return 0;}
2)客户端
#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")#define BUFLEN 1024int main(){SOCKET soc;SOCKADDR_IN serveraddr; //TCP使用的都是socket_in数据结构SOCKADDR_IN clientaddr;char buf[BUFLEN]; WSADATA wsa;WSAStartup(MAKEWORD(1,1),&wsa);//initial Ws2_32.dll by a processif((soc = socket(AF_INET, //TCP/IP协议 SOCK_STREAM, //TCP流传输 IPPROTO_TCP)) <= 0)//create a tcp socket{printf("Create socket fail!\n");return -1;}serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(9102); //服务端服务的端口号serveraddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//服务器的IP地址//connect to serverprintf("Try to connect...\n");if(connect(soc, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) != 0)//请求连接服务器{printf("Connect fail!\n");return -1;}printf("Connected\n");while(1)//不断的向服务器发送消息{scanf("%s", buf);if(send(soc, buf, strlen(buf)+1, 0)<=0){printf("Error!\n");}}WSACleanup(); //clean up Ws2_32.dll return 0;}
- 【WinSocket】WinSocket 之TCP示例
- 【WinSocket】WinSocket 之TCP示例
- winsocket
- WinSocket
- winsocket
- Winsocket
- Winsocket编程之TCP/IP体系结构
- Winsocket编程之TCP/IP体系结构
- Winsocket编程之TCP/IP体系结构
- Winsocket编程之TCP/IP体系结构
- WinSocket的最简单示例
- IPV6 TCP的WinSocket实现。
- 简单的 winsocket TCP通信
- QT分析之温故而知新 WinSocket
- winsocket 之收发数据出问题
- WinSocket编程例子(TCP和UDP)
- winsocket rc
- 初识WinSocket
- emacs学习笔记(基本概念)
- 转:【君子工作室】Android第五季------认识Android系统内核架构(MIUI为例)
- Android --- (5)intent对象更多用法,目录说明,打印Notification
- android自定义EditText
- android 验证码
- 【WinSocket】WinSocket 之TCP示例
- jQuery的绑定事件
- 图片上传插件,基于jquery的上传插件,ajax图片上传,再更新
- Java集合框架(三)之泛型详解
- 适配器模式
- android 字符串转json
- C中的库函数汇总
- 怎样以少于1000行代码写一个视频播放器-将电影文件中的视频帧存储为BMP图片
- Jmockit入门