资源简介
本次实验利用TCP/IP, 语言环境为 C/C++
利用套接字Socket编程,以及线程处理,
实现Server/CLient 之间多人的聊天系统的基本功能。

代码片段和文件信息
/* TCPClient.cpp -- 用于传递struct */
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFLEN 2000 // 缓冲区大小
#define WSVERS MAKEWORD(2 0) // 指明版本2.0
#pragma comment(lib“ws2_32.lib“) // 指明winsock 2.0 Llibrary
/*------------------------------------------------------------------------
* main - TCP client for DAYTIME service
*------------------------------------------------------------------------
*/
SOCKET socksockets[100] = {NULL}; /* socket descriptor */
// int cc; /* recv character count */
char *packet = NULL; /* buffer for one line of text */
char *pts*input;
HANDLE hThread;
unsigned threadID;
unsigned int __stdcall Chat(PVOID PM )
{
time_t now;
(void) time(&now);
pts = ctime(&now);
char buf[2000];
while(1)
{
int cc = recv(sock buf BUFLEN 0); //cc为接收的字符数
if(cc == SOCKET_ERROR|| cc == 0)
{
printf(“Error: %d.----“GetLastError());
printf(“与服务器断开连接!\n“);
CloseHandle(hThread);
(void)closesocket(sock);
break;
}
else if(cc > 0)
{
// buf[cc] = ‘\0‘;
printf(“%s\n“buf);
// printf(“输入数据(exit退出): \n“);
}
}
return 0;
}
int main(int argc char *argv[])
{
time_t now;
(void) time(&now);
pts = ctime(&now);
char *host = “127.0.0.1“; /* server IP to connect */
// char *host = “172.18.33.155“;
// char *host = “172.18.33.93“;
// char *host = “172.18.187.1“;
char *service = “5050“; /* server port to connect */
// char *service = “50000“;
struct sockaddr_in sin; /* an Internet endpoint address */
WSADATA wsadata;
WSAStartup(WSVERS &wsadata); /* 启动某版本Socket的DLL */
memset(&sin 0 sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons((u_short)atoi(service)); //atoi:把ascii转化为int. htons:主机序(host)转化为网络序(network) s--short
sin.sin_addr.s_addr = inet_addr(host); //如果host为域名,需要先用函数gethostbyname把域名转化为IP地址
sock = socket(PF_INET SOCK_STREAM0);
connect(sock (struct sockaddr *)&sin sizeof(sin));
printf(“\t\t\t\tChat 多人聊天程序 \n“);
printf(“\t\t\t\t (Client) \n“);
hThread = (HANDLE)_beginthreadex(NULL 0Chat NULL 0 &threadID);
printf(“ \t\t\t\t 【您可以自由发言】\n\n“);
while(1)
{
char buf1[2000];
// scanf(“%s“&buf1);
gets(buf1);
if(!strcmp(buf1 “exit“))
goto end;
(void) send(sockbuf1 sizeof(buf1) 0);
(void) time(&now);
pts = ctime(&now);
printf(“ 发送成功! ------时间: %
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3352 2017-10-29 10:11 socket多人聊天\client2.cpp
文件 5310 2017-10-29 09:58 socket多人聊天\server2.cpp
文件 275 2017-10-29 10:32 socket多人聊天\提示.txt
- 上一篇:12864显示汉字.zip
- 下一篇:经典差分进化算法的C++语言实现
相关资源
- C++多线程网络编程Socket
- socket客户端.c
- socket服务端.c
- socket tcp应用
- socket通讯c++源码(客户端+服务端)
- MFC的异步网络通讯应用程序
- 各种关于CAsyncSocketCSocket内幕及其用法
- MFC多人聊天室
- 使用socket套接字发送udp数据包
- CAsyncSocket异步实现服务器与客户端
- 基于socket文件传输的实现源码[C++]
- C语言实现TCP/IP协议通信和UDP协议通信
- c语言+UDP+DES加密+socket编程
- 局域网下,手机可以和电脑通过sock
- 计算机网络课程设计之Ping程序含C++原
- 基于c++和winsocket的局域网聊天源代码
- 基于udp的socket编程
- VC++,CSocket实现网络聊天,可发文件,
- 基于TCP协议的文件传输编程
- Socket编写的一个基于MFC的聊天程序源
- C++写的网络共享白板
- 基于TCP/IP socket的局域网聊天系统
- C++编写的多线程C/S模式仿QQ软件
- vc-基于MFC编程,使用TCP/IP模型编写
- c++ socket 实现 语音 通信 双工
- MFC Csocket实现点对点文件传输
- CSocket端口扫描源代码MFC、VC++耿网出品
- 简单的基于MFC的Socket点对点对话客户
- MFC简单的客户端服务器通信软件
- 网络五子棋双人对弈系统
评论
共有 条评论