资源简介
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
相关资源
- C++头文件转delphi工具 + 源码
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- socket客户端.c
- socket服务端.c
川公网安备 51152502000135号
评论
共有 条评论