C++实现TCP通信
来源:互联网 发布:网络结婚主持台词 编辑:程序博客网 时间:2024/06/14 20:23
服务端
#include "InitSock.h"#include <stdio.h>#include <iostream>#include <string.h>#include<WS2tcpip.h>using namespace std;CInitSock initSock; // 初始化Winsock库SOCKADDR_IN serverAddr;//sockaddr_in remoteAddr;int nAddrLen = sizeof(serverAddr);SOCKET sListen = ::socket(AF_INET, SOCK_STREAM, 0);SOCKET sClient[20] = { 0 };int q=0;DWORD _stdcall ThreadProc_sea(LPVOID IpParamenter){ char buff[20][256]; while (true) { // 从客户端接收数据 int nRecv = ::recv(sClient[0], buff[0], 256, 0); if (nRecv > 0) { buff[0][nRecv] = '\0'; printf(" 接收到数据:%s\n", buff[0]); } } return 0;}DWORD _stdcall ThreadProc(LPVOID IpParamenter){ // 接受一个新连接 sClient[q] = ::accept(sListen, (SOCKADDR*)&serverAddr, &nAddrLen); if (sClient[q] == INVALID_SOCKET) { printf("Failed accept()"); } char sendBuf[20] = { '\0' }; inet_ntop(AF_INET, (void*)&serverAddr.sin_addr, sendBuf, 16); printf("接受到一个连接:%s \r\n", sendBuf); q++; return 0;}int main(){ // 创建套节字 CreateThread(NULL, 0, ThreadProc_sea, NULL, 0, NULL); if (sListen == INVALID_SOCKET) { printf("Failed socket() \n"); return 0; } // 填充sockaddr_in结构 ZeroMemory((char *)&serverAddr, sizeof(serverAddr)); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(8888); /*本地监听端口:1234*/ serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); // 绑定这个套节字到一个本地地址 if (::bind(sListen, (LPSOCKADDR)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) { printf("Failed bind() \n"); return 0; } // 进入监听模式 if (::listen(sListen, 2) == SOCKET_ERROR) { printf("Failed listen() \n"); return 0; } // 循环接受客户的连接请求 char szText[] = " TCP Server Demo! \r\n"; CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL); while (true) { // 向客户端发送数据 cin >> szText; for (int i = 0; i < q; i++) { ::send(sClient[i], szText, strlen(szText), 0); } } // 关闭同客户端的连接 for (int i = 0; i < q; i++) { ::closesocket(sClient[i]); } // 关闭监听套节字 ::closesocket(sListen); return 0;}
客户端
#include "InitSock.h"#include <stdio.h>#include <iostream>#include<WS2tcpip.h>using namespace std;CInitSock initSock; // 初始化Winsock库char buff[256];SOCKET s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);DWORD _stdcall go(LPVOID IpParamenter){ while (TRUE) { int nRecv = ::recv(s, buff,900, 0); if (nRecv > 0) { buff[nRecv] = '\0'; printf("接收到数据:%s\n", buff); } } return 0;}int main(){ CreateThread(NULL, 0, go, NULL, 0, NULL); // 创建套节字 //SOCKET s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (s == INVALID_SOCKET) { printf(" Failed socket() \n"); return 0; } // 也可以在这里调用bind函数绑定一个本地地址 // 否则系统将会自动安排 // 填写远程地址信息 sockaddr_in servAddr; servAddr.sin_family = AF_INET; servAddr.sin_port = htons(2001); // 注意,这里要填写服务器程序(TCPServer程序)所在机器的IP地址 // 如果你的计算机没有联网,直接使用127.0.0.1即可 inet_pton(AF_INET, "192.168.1.1", (void*)&servAddr.sin_addr.S_un.S_addr); if (::connect(s, (sockaddr*)&servAddr, sizeof(servAddr)) == -1) { printf(" Failed connect() \n"); return 0; } cout << "connect succeed!\n"; char szText[256]; /*while (TRUE) { //从服务器端接收数据 /*int nRecv = ::recv(s, buff, 256, 0); if (nRecv > 0) { buff[nRecv] = '\0'; printf("接收到数据:%s\n", buff); }*/ // 向服务器端发送数据 /* Sleep(1000); strcpy_s(szText,"1023\n"); szText[255] = '\0'; ::send(s, szText, strlen(szText), 0); }*/ // 关闭套节字 ::closesocket(s); return 0;}
阅读全文
1 0
- C语言实现TCP通信
- C语言socket编程----实现TCP通信
- Linux下C语言实现TCP通信
- c语言实现TCP的socket通信
- 【C++】简单TCP通信
- C#:网络通信(TCP)
- C语言实现DOS下的TCP/IP通信
- windows下C调用socket实现TCP和UDP通信
- tcp协议实现C/S通信(代码)
- C语言实现服务端和客户端进行TCP通信实例
- Linux C——使用父子进程实现TCP通信
- Linux C TCP Socket实现客户与服务器简单通信
- Linux C TCP Socket实现客户与服务器简单通信
- C语言实现服务端和客户端进行TCP通信实例
- llinux C练习十 Tcp通信select实现简易聊天
- TCP通信C++实现
- python实现TCP通信
- C++实现TCP通信。。
- python初级操作:类,函数
- strcpy等函数的模拟实现
- Spring通过dataSource获取数据库的连接测试
- 《Angular路由跳转之指令跳转》
- NSArray实战
- C++实现TCP通信
- 开源库MOGRE托管版编译教程
- ViewPager初识
- 关于附件上传
- 11.C 语言连接 MySQL
- SQL函数与自定义函数
- 设计模式之工厂模式
- nginx配置负载均衡
- Android—DialogActivity讲解