资源简介
网络聊天室程序源代码
给大家提供的小小的一个程序,有一些问题,大家可以给我提出。运行程序时,首先启动服务器端,然后启动客户端,客户端首先将消息发送到服务器端,服务器再转发到各个客户端。在客户端输入“:”开始输入发送的消息。

代码片段和文件信息
#include
#include
#include
#include
using namespace std;
#pragma comment(lib “ws2_32.lib“)
#define PORT 5150
void DoChoose();
DWORD WINAPI SendThread(LPVOID lpParameter);
SOCKET ClientSocket;
fd_set readfd;
char recv_buf[1024];
struct timeval tv;
char name[255]; //get host name
PHOSTENT hostinfo;
int line = 0; // the message lines
COORD pos; //定义一个位置变量
int main()
{
WSADATA wsadata;
SOCKADDR_IN serveraddr;
char send_buf[512];
char total_send[1024];
char end[] = “:“;
char ipAddr[13];
char *ip = ipAddr;
char getkey; // the number of ip
char key;
int number = 0; // array number
memset(recv_buf 0x00 sizeof(recv_buf));
memset(send_buf 0x00 sizeof(send_buf));
memset(total_send 0x00 sizeof(total_send));
memset(ipAddr 0x00 sizeof(ipAddr));
// get server ip address
cout<<“Please input the server‘s IP: “;
while ((getkey = cin.get()) != ‘\n‘)
{
*ip++ = getkey;
}
*ip = ‘\0‘;
cout<
//Initilization winsock
WSAStartup(MAKEWORD(2 2) &wsadata);
if(gethostname(namesizeof(name))==0)
{
if((hostinfo = gethostbyname(name) )!= NULL)
{
//if get host name successfully,use inet_ntoa() to get ip address
LPCSTR ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
strcpy(total_send ip);
strcat(total_send end);
}
}
ClientSocket = socket(AF_INET SOCK_STREAM IPPROTO_TCP);
if (ClientSocket == INVALID_SOCKET)
{
cout<<“create socket error“< exit(EXIT_FAILURE);
}
//set server address
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(PORT);
serveraddr.sin_addr.s_addr = inet_addr(ipAddr);
//connect to server
if (connect(ClientSocket (SOCKADDR *)&serveraddr sizeof(serveraddr)) == SOCKET_ERROR)
{
cout<<“Connect Error“< exit(EXIT_FAILURE);
}
else
{
cout<<“Connect successfully!“< }
CreateThread(NULL 0 SendThread NULL 0 NULL);
while (1)
{
if (getch() == ‘:‘)
{
// get key value
memset(send_buf 0x00 sizeof(send_buf));
// set new position of cursor
pos.X=0;
pos.Y=24 + line;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE)pos);
while ((key = cin.get()) != ‘\n‘)
{
send_buf[number++] = key;
}
// clear the input line
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE)pos);
cout<<“ “;
// send message
strcat(total_send send_buf);
send(ClientSocket total_send sizeof(total_send) 0);
memset(send_buf 0x00 sizeof(send_buf));
memset(total_send 0x00 sizeof(total_send));
number = 0;
}
else
{
continue;
}
}
closesocket(ClientSocket);
WSACleanup();
return EXIT_SUCCESS;
}
DWORD WINAPI SendThread(LPVOID lpParameter)
{
//set waiting time
tv.tv_sec = 2;
tv.tv_usec = 0;
while (1)
{
/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2655 2011-08-26 14:31 server.cpp
文件 3808 2011-09-03 17:04 client.cpp
- 上一篇:学生宿舍网络设计方案
- 下一篇:用Xlib库进行基本图形编程 PDF
相关资源
- IIS选项程序 添加/删除windows组件中找
- 易语言取程序运行时间模块源码
- 在LabVIEW 中利用TCPIP协议实现网络通信
- delphi源码-检测是否运行了多个程序
- 网络协议及套接字科普PPT
- 达尔优机械键盘驱动程序 v13.05.03 官方
- 计算机三级-网络技术-第4大题题库-共
- 6122协议和红外线的发送程序
- 红外转串口通信含原理图和程序
- stm32做的红外遥控解码程序
- 联想lenovo G480 USB3.0驱动程序 for win7
- CiscoWorks QoS Policy Manager白皮书英文
- CNN-SVM模型在抽油机井故障诊断中的应
- nmos转移特性曲线hspice程序—&mdas
- 易语言高仿Windows记事本源码
- 九齐程序 ny Q-Code
- Palm OS应用程序设计指南
- Borland Socket Server程序 包含D6和D7源码
- TCP IP通信labview程序
- 网络安全等级保护测评实施20180904
- 2018西门子杯中国智能制造挑战赛逻辑
- 自已写的 自习室预约小程序微信125
- bp神经网络源代码,可直接运行
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- E4A无障碍跨程序操作类库(带源码、
- labview魔方程序
- 04741计算机网络原理知识点整理.docx(
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
评论
共有 条评论