多线程socket通信client
来源:互联网 发布:淘宝店铺经营类别 编辑:程序博客网 时间:2024/05/20 00:12
控制台下实现多线程socket通信,服务端为每个请求的客户端创建一个线程,进行通信。(其实这些MSDN里都有)
一.基本流程如下:
定义变量->获得winsock版本->加载winsock库->初始化->创建套接字->设置套接字选项->关闭套接字->卸载winsock库->释放资源
二.客户端 建立过程(下篇是服务端)
1 初始化WSA
2 建立一个SOCKET
3 连接到服务器
4 发送和接受数据
5 断开连接
三.注意winsock下编程有用到两个库
Winsock2.h
ws2_32.lib
#include <Winsock2.h>#include <stdio.h>#include <string>#include <iostream>using namespace std;#pragma comment(lib,"ws2_32.lib")int main(int argc, char* argv[]){// (1)加载套接字库WORD wVersionRequested;//WinSock库的版本号WSADATA wsaData;int iResult;wVersionRequested = MAKEWORD(1, 1);iResult = WSAStartup(wVersionRequested, &wsaData);if( iResult != NO_ERROR){printf("WSAStartup() failed with error: %d\n", iResult);return -1 ;}if( LOBYTE( wsaData.wVersion) != 1 || HIBYTE( wsaData.wVersion) !=1 ){WSACleanup();return -2;}// (2)创建套接字SOCKET sockClient = socket( AF_INET,SOCK_STREAM, 0 );if (sockClient == INVALID_SOCKET) {printf("socket function failed with error: %ld\n", WSAGetLastError());WSACleanup();return -1;}SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(51555);// (3)向服务器发出连接请求iResult = connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));if (iResult == SOCKET_ERROR){printf("connect function failed with error %d\n", WSAGetLastError());WSACleanup();return -1;}// (4)发送接收数据string strSend;while(cin >> strSend){//发送数据send(sockClient, strSend.c_str(), strSend.size()+1, 0);//接受数据char recvBuf[100] = {0};if (recv( sockClient, recvBuf, 100, 0) != SOCKET_ERROR){printf("receive text: %s\n", recvBuf);}}// (5)结束处理iResult = closesocket(sockClient);if (iResult == SOCKET_ERROR){printf("closesocket function failed with error %d\n", WSAGetLastError());WSACleanup();return -1;}WSACleanup();return 0;}
- 多线程socket通信client
- Java Socket编程 多线程server和client通信demo
- socket通信实例client端
- 进程间通信 SOCKET Client
- 多线程异步Socket通信
- 多线程socket通信server
- Socket 多线程通信
- 多线程socket通信server
- 多线程Socket通信
- Socket通信-accept+多线程
- 简单的socket UDP Client Server通信
- socket通信server+client的C++版
- Socket编程—Client、Server通信
- 使用Socket编写Client-Server通信总结
- 简单的多线程socket—client
- Java Socket通信(多线程)
- Java Socket多线程通信例子
- java模拟多线程socket通信
- VS 使用小技巧 提高编程效率
- struts2的jsp页面提交后,命名空间重复出现的问题
- 数据集成之主数据管理(转载整理)
- 2012届华为校园招聘上机考试题目——自己也尝试了下
- 修改centos stage2.img 文件
- 多线程socket通信client
- 程序设计中的几个原则
- A链接标签点击不会触发任何行为的写法
- 单向链表倒序的几种方法略解
- poj 2117(统计连通块的个数)
- IP NAT inside source/ IP NAT outside source
- centos安装盘制作
- Android应用实例之(一)----->有道辞典VZ.0
- [字符集]Unicode和UTF-8之间的转换详解