资源简介
c++实现的双向通信的socket小程序,如果自己实现界面可做一个简易的聊天程序
代码片段和文件信息
// client.cpp : Defines the entry point for the console application.
//
#include
#include //Socket的函数调用
#include
#define BUF_SIZE 6400
#pragma comment (lib “ws2_32“) // 使用WINSOCK2.H时,则需要库文件WS2_32.LIB
DWORD WINAPI Rcv( LPVOID lpParam )
{
SOCKET sHost = *(SOCKET*)lpParam;
int retVal;
char bufRecv[BUF_SIZE];
memset( bufRecv 0 sizeof( bufRecv ) );
while(1)
{
retVal = recv( sHost bufRecv BUF_SIZE 0 );
if ( retVal == SOCKET_ERROR ) {
printf( “recive faild!\n“ );
break;
} else {
printf( “收到服务器消息:%s\n“ bufRecv );
}
}
return 0;
}
DWORD WINAPI Snd( LPVOID lpParam )
{
SOCKET sHost = *(SOCKET*)lpParam;
int retVal;
char bufSend[BUF_SIZE];
memset( bufSend 0 sizeof( bufSend ) );
while(1)
{
gets( bufSend );
retVal = send( sHost bufSend strlen(bufSend)+sizeof(char) 0 );
if ( retVal == SOCKET_ERROR ) {
printf( “send faild!\n“ );
break;
}
}
return 0;
}
int main(int argc char* argv[])
{
WSADATA wsaData;
if ( WSAStartup( MAKEWORD(22) &wsaData ) != 0 ) {
printf( “Winsock load faild!\n“ );
return 1;
}
// 服务器套接字
SOCKET sHost = socket( AF_INET SOCK_STREAM IPPROTO_TCP );
if ( sHost == INVALID_SOCKET ) {
printf( “socket faild!\n“ );
WSACleanup();
return -1;
}
SOCKADDR_IN servAddr;
servAddr.sin_family = AF_INET;
// 注意 当把客户端程序发到别人的电脑时 此处IP需改为服务器所在电脑的IP
servAddr.sin_addr.S_un.S_addr = inet_addr( “127.0.0.1“ );
servAddr.sin_port = htons( 9999 );
// 连接服务器
if ( connect( sHost (LPSOCKADDR)&servAddr sizeof( servAddr ) ) == SOCKET_ERROR ) {
printf( “connect faild!\n“ );
closesocket(sHost);
WSACleanup();
return -1;
}
printf(“连接到服务器 IP:[%s]port:[%d]\n“inet_ntoa(servAddr.sin_addr)ntohs(servAddr.sin_port));
HANDLE hThread1 hThread2;
DWORD dwThreadId1 dwThreadId2;
hThread1 = ::CreateThread( NULL NULL Snd (LPVOID)&sHost 0 &dwThreadId1 );
hThread2 = ::CreateThread( NULL NULL Rcv (LPVOID)&sHost 0 &dwThreadId2 );
::WaitForSingleobject( hThread1 INFINITE );
::WaitForSingleobject( hThread2 INFINITE );
::CloseHandle(hThread1);
::CloseHandle(hThread2);
closesocket(sHost);
WSACleanup();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 554103 2017-06-05 18:58 client.exe
文件 3003 2017-06-05 18:58 server.cpp
文件 555019 2017-06-05 18:58 server.exe
文件 2348 2017-06-05 18:58 client.cpp
----------- --------- ---------- ----- ----
1114473 4
相关资源
- Oracle 84%安装报错compat-libstdc++-33-3.2.
- OpenGL纹理贴图源程序.rar
- 《Qt 5.9 C++开始指南》2.2节 可视化UI设
- C++本科作业--模拟动物园
- C++ 编写的杀毒软件
- Visual C++开发基于SNMP的网络管理软件
- c/c++中文帮助文档API
- linux环境下C语言实现图片的socket传输
- Marching cubes C++ 源代码
- Vc++6.0MFC入门教程,很好的资源。
- VC++6.0 MFC 超简易计算器
- C++画数学函数图象
- c++实现数字转换英文无and
- c++利用数组实现简单的奇偶校验
- C++实现软件自动更新(update)
- c++遗传算法,用bitset实现
- VC++ OPC客户端程序
- C++纸牌游戏——21点
- MFC开发的与服务器通讯程序
- 大整数乘法全解绝对可运行C++
- C语言实现socket服务端和客户端
- 《C++标准库 第2版》 中文版
- 车辆管理系统C++
- 小型C++设计的数据库设计
- C++ Primer Plus第6版中文版源代码
- C++ 二叉树 动物猜想游戏
- 多个定时器的 Timer VC++
- C++primer 第五版最新版 源代码 程序.
- Visual C++开发的网络监听程序
- HTTP上传和C++封装类支持GET、POST多种方
评论
共有 条评论