资源简介
网络聊天室程序源代码
给大家提供的小小的一个程序,有一些问题,大家可以给我提出。运行程序时,首先启动服务器端,然后启动客户端,客户端首先将消息发送到服务器端,服务器再转发到各个客户端。在客户端输入“:”开始输入发送的消息。
代码片段和文件信息
#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
相关资源
- 学生宿舍网络设计方案
- 基于汇编程序AT89C51八路抢答器
- 单总线两个DS18B20温度传感器程序及其
- Proteus仿真+DAC0832+源程序
- Ns网络模拟和协议仿真
- 微信小程序 录语音 波浪效果
- 汇编程序的小游戏,移动飞机射击飞
- 编程统计数据区中正数、零和负数的
- 实习日志\\网络编辑实习日志
- wireshark抓包实验之HTTP
- vs2008简单聊天程序
- 实用网络技术配置指南-初级篇
- bird DSMC程序
- cordic算法的vhdl程序
- 城市交通网络设计问题中双层规划模
- 雷达基数据C程序
- 绕翼型网格生成源程序
- 《C程序设计语言》第二版 中文高清
- 天然水侵量的计算程序
- STM32F407 ADC1双通道采样,DMA传输程序库
- STM32F103增量式编码器的采集以及处理
- 单片机PWM调速程序
- HR202程序文件
- UMAT程序
- xp组策略开启了用户配置→系统→只运
- N76E003串口0、串口1中断程序模板
- 超声波程序代码
- stc15xxxx单片机RFID RC 522 读写卡程序可
- VisualC.NET串口通信及测控应用典型程序
- 工程桩自动编号及提取坐标程序
评论
共有 条评论