只能实现同一局域网内的两台电脑的聊天
聊天内容通过一个黑窗口显示,另一个黑窗口用来发送消息
有点死板,必须要两台电脑都接上服务端才行
一个服务端,两个客户端(其实应该是4个吧,显示窗口也是一个客户端)
效果如图
食用方法:
TServer:服务端
Display_TCP:显示聊天内容的一个客户端(display.cpp的生成文件)
TClinet:用于发送消息的客户端
只能用于两台同一局域网的电脑聊天,而且两台电脑都要连接到服务端才行
/********************************************************************/
先一台电脑启动服务端TServer
然后再启动Display_TCP,根据提示先输入开启服务端的电脑的IP地址
这里是有做防止非法操作的,但是并不严谨,所以还请输入正确
的ip地址,若输入出错则需删除当前文件夹内的ipconfig.txt文件,再
重新打开,也可以直接把文本内容改为正确的ip地址
输入正确的ip地址后,会自动启动TClient
然后再在另一台同一局域网的电脑里启动Display_TCP,步骤同上
之后就可以发消息了,消息内容不限长短
两边同时发送的话应该会有问题,虽然还没有尝试,但是推测应
该分两种情况
1、先连接进服务端的电脑的消息会先显示,然后再显示后连接的
2、显示后连接的客服端的一部分消息,然后完全显示先连接的,
再显示后连接客户端剩下的消息
/********************************************************************/
头文件WSAStartup.h
#ifndef WSASTARTUP_H
#define WSASTARTUP_H
#include<iostream>
#include<winsock.h>
#define SIZE_BUF 40
#pragma comment(lib,"ws2_32.lib")
class Wsastart {
public:
Wsastart() {
WSADATA data;
WORD v = MAKEWORD(2, 0);
if (WSAStartup(v, &data)) {
std::cout << "初始化失败" << std::endl;
exit(0);
}
}
~Wsastart() {
WSACleanup();
}
static bool check_ip(char *ip);
};
enum SEND_NAME {
yes = 0,
no
};
#endif
check.cpp
#include"WSAStartup.h"
bool Wsastart::check_ip(char *ip) {
int count = 0;
while (*ip != '\0') {
if (*ip == '.') {