资源简介
使用C语言Socket实现多线程服务器,TCP与UDP数据传输,可以进行多客户端登陆以及多客户端同时发送消息,适合刚开始进行网络技术基础编程的人士使用。
代码片段和文件信息
#include
#include
#include
#pragma comment(lib“Ws2_32.lib“)
using namespace std;
#define BUFFERSIZE 100
void DisplayHint();
int main(int argc char* argv[])
{
if(argc !=3)
{
cout<<“usage:“<<“HwClient serverip serverport“< return 0;
}
WORD wVersion;
WSAData wData;
SOCKET tcpSudpS;
sockaddr_in remote;
int choice;
char choiceBuf[10];
int err;
int udpPort;
int ret;
int addrLen;
char recvBuf[BUFFERSIZE] = ““;
char sendBuf[BUFFERSIZE] = ““;
wVersion = MAKEWORD(22);
err = WSAStartup(wVersion&wData);
if(err !=0)
{
cout<<“Fail to laod socket dll:“< return 0;
}
//------------------------
tcpS = WSASocket(AF_INETSOCK_STREAMIPPROTO_TCPNULL00);
if(tcpS == INVALID_SOCKET)
{
cout<<“Error code:“< WSACleanup();
return 0;
}
remote.sin_family = AF_INET;
remote.sin_addr.s_addr = inet_addr(argv[1] ); // server ip
remote.sin_port = htons(atoi(argv[2])) ; // server port
err = connect( tcpS (SOCKADDR*) &remote sizeof(remote) );
if(err == SOCKET_ERROR)
{
cout<<“Failed to connect“< WSACleanup();
return 0;
}
// ret = SOCKET_ERROR;
while(1)
{
ret = recv(tcpSrecvBufBUFFERSIZE0);
cout<
do
{
cout<<“input : GET UDP PORT“< cin.getline(sendBuf20);
if(strcmp(sendBuf“GET UDP PORT“) !=0)
cout<<“Bad request.“< }while(strcmp(sendBuf“GET UDP PORT“) !=0);
ret = send(tcpSsendBufstrlen(sendBuf)0);
if(ret == SOCKET_ERROR)
{
cout<<“send() failed:“< break;
}
//receive udp port
memset(recvBuf0BUFFERSIZE);
ret = recv(tcpSrecvBufBUFFERSIZE0);
udpPort = atoi(recvBuf);
cout<<“udp port is:“<
//------------------------------
//create udp socket
udpS = WSASocket(AF_INETSOCK_DGRAMIPPROTO_UDPNULL
0WSA_FLAG_OVERLAPPED);
if(udpS == INVALID_SOCKET)
{
cout<<“create udp socket error:“< return 0;
}
do{
DisplayHint();
cin.getline(choiceBufBUFFERSIZE);
choice = atoi(choiceBuf);
switch(choice)
{
case 1:
strcpy(sendBuf“GET CUR TIME“);
ret = send(tcpSsendBufstrlen(sendBuf)0);
if(ret == SOCKET_ERROR)
{
cout<<“send() failed:“< break;
}
memset(recvBuf0BUFFERSIZE);
ret = recv(tcpSrecvBufBUFFERSIZE0);
cout<<“Current time is: “< break;
case 2:
cout<<“Enter your message:“< memset(sendBuf0BUFFERSIZE);
cin.getline(sendBufBUFFERSIZE);
remote.sin_family = AF_INET;
remote.sin_port = htons(udpPort);
remote.sin
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 71680 2014-11-06 17:04 SocketClient\Debug\SocketClient.exe
文件 523892 2014-11-06 17:04 SocketClient\Debug\SocketClient.ilk
文件 953344 2014-11-06 17:04 SocketClient\Debug\SocketClient.pdb
文件 61 2014-11-05 18:59 SocketClient\Debug\新建文本文档.txt
文件 4045 2014-11-06 17:04 SocketClient\SocketClient\client.cpp
文件 594 2014-11-06 17:04 SocketClient\SocketClient\Debug\cl.command.1.tlog
文件 29502 2014-11-06 17:04 SocketClient\SocketClient\Debug\CL.read.1.tlog
文件 308 2014-11-06 17:04 SocketClient\SocketClient\Debug\CL.write.1.tlog
文件 189528 2014-11-06 17:04 SocketClient\SocketClient\Debug\client.obj
文件 2 2014-11-06 17:04 SocketClient\SocketClient\Debug\li
文件 2 2014-11-06 17:04 SocketClient\SocketClient\Debug\li
文件 2 2014-11-06 17:04 SocketClient\SocketClient\Debug\li
文件 2 2014-11-06 17:04 SocketClient\SocketClient\Debug\li
文件 1082 2014-11-06 17:04 SocketClient\SocketClient\Debug\li
文件 2600 2014-11-06 17:04 SocketClient\SocketClient\Debug\li
文件 386 2014-11-06 17:04 SocketClient\SocketClient\Debug\li
文件 59 2014-11-06 17:04 SocketClient\SocketClient\Debug\SocketClient.lastbuildstate
文件 1744 2014-11-06 17:04 SocketClient\SocketClient\Debug\SocketClient.log
文件 723968 2014-11-06 17:04 SocketClient\SocketClient\Debug\vc110.idb
文件 430080 2014-11-06 17:04 SocketClient\SocketClient\Debug\vc110.pdb
文件 4014 2014-11-05 11:07 SocketClient\SocketClient\SocketClient.vcxproj
文件 944 2014-11-05 11:07 SocketClient\SocketClient\SocketClient.vcxproj.filters
文件 382 2014-11-05 11:10 SocketClient\SocketClient\SocketClient.vcxproj.user
文件 32505856 2014-11-06 21:25 SocketClient\SocketClient.sdf
文件 903 2014-11-05 11:05 SocketClient\SocketClient.sln
..A..H. 19968 2014-11-06 21:25 SocketClient\SocketClient.v11.suo
文件 33280 2014-11-06 21:22 SocketServer\Debug\SocketServer.exe
文件 322672 2014-11-06 21:22 SocketServer\Debug\SocketServer.ilk
文件 560128 2014-11-06 21:22 SocketServer\Debug\SocketServer.pdb
文件 594 2014-11-06 21:22 SocketServer\SocketServer\Debug\cl.command.1.tlog
............此处省略37个文件信息
- 上一篇:c++网络编程
- 下一篇:算法图解-Python语言版本C/C++也可以看懂
相关资源
- 基于VC++ Socket 网络调试助手源码
- dll 封装 socket tcp/ip 简单易懂。
- MFC+CSocket聊天室程序
- 数据包捕获与分析 端口扫描 流量统计
- 基于MFC的多线程编程以及在Picture Co
- MFC SOCKET TCP VC6.0 服务器 客户端 源码编
- Visual C++网络高级编程pdf+源代码
- TCP多客户端通讯,单管道、双管道通
- c++ Windows Socket实现最简单的C/S网络通
- C++多线程编程实战 姜佑译2018年最新
- c++语言opencv加socket实现远程桌面监控
- tcp ip sockets编程 c语言实现 第2版 中文
- TCPSocket摄像头实时传输视频和图片传
- CTP行情接收工具和行情拆分工具 完整
- websocket客户端
- MFC socket与websocket通信
- POSIX多线程程序设计.pdf
- Linux多线程服务端编程-陈硕.pdf
- 用C++/MFC实现P2P和群聊功能的聊天小软
- C/S架构文件传输,socket实现C++完整代
- C 并发编程实战(C 11).[美]Anthony Wi
- VC++基于socket传输文件服务端和客户端
- Windows多线程编程技术与pdf+源代码
- MFC TCP多客户端通信(基于CAsyncSocket)
- 精通Windows Sockets网络开发:基于Visu
- websocket C++ Server端简单demo
- wincap c++ mfc 网络截包 多线程
- C++纯socket写的FTP服务器
- C++编写基于socket的网络电话
- 基于UDP的Socket 通信源码VC++ 2010 MFC
评论
共有 条评论