单位建设网站,优设网设计服务平台,免费发布出租房信息网站,类似建E网模型网站建设文章内容#xff1a; 一个简单的显示windows平台下ctcp的代码
客户端代码已上传服务器代码未验证方便自己日后使用
客户端#xff1a;
#if _MSC_VER 1600 //VS2010版本号是1600#pragma execution_character_set(utf-8)
#endif
#include mynetdump.h 一个简单的显示windows平台下ctcp的代码
客户端代码已上传服务器代码未验证方便自己日后使用
客户端
#if _MSC_VER 1600 //VS2010版本号是1600#pragma execution_character_set(utf-8)
#endif
#include mynetdump.husing namespace std;MyNetDump::MyNetDump(QObject *parent): QThread(parent)
{}MyNetDump::~MyNetDump()
{closesocket(clientSocket);WSACleanup();this-wait();
}void MyNetDump::InitWincap(QString IP, int port, int ui_count)
{m_count ui_count;WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), wsaData) ! 0){qDebug() Failed to initialize winsock;return;}clientSocket socket(AF_INET, SOCK_STREAM, 0);if (clientSocket INVALID_SOCKET){qDebug() Failed to create socket;return;}serverAddress.sin_family AF_INET;serverAddress.sin_port htons(port);serverAddress.sin_addr.s_addr inet_addr(IP.toStdString().c_str());// // 设置连接超时时间// int timeout 5000; // 5秒// setsockopt(clientSocket, SOL_SOCKET, SO_RCVTIMEO, (char *)timeout, sizeof(timeout));// setsockopt(clientSocket, SOL_SOCKET, SO_SNDTIMEO, (char *)timeout, sizeof(timeout));if (::connect(clientSocket, (struct sockaddr *)serverAddress, sizeof(serverAddress)) SOCKET_ERROR){qDebug() Failed to connect to server;return;}this-start();
}void MyNetDump::run()
{while(isRunning()){char buffer[4096];memset(buffer, 0, sizeof(buffer));int len recv(clientSocket, buffer, sizeof(buffer), 0);if (len SOCKET_ERROR){qDebug() Failed to receive data from server;return;}QString str QString(QLatin1String(buffer));emit sigRecvMsg(str, m_count);msleep(5);}
}
服务器代码
#include iostream
#include winsock2.h#pragma comment(lib, ws2_32.lib)int main() {WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), wsaData) ! 0) {std::cout Failed to initialize winsock std::endl;return -1;}SOCKET serverSocket socket(AF_INET, SOCK_STREAM, 0);if (serverSocket INVALID_SOCKET) {std::cout Failed to create socket std::endl;return -1;}sockaddr_in serverAddress;serverAddress.sin_family AF_INET;serverAddress.sin_port htons(8080);serverAddress.sin_addr.s_addr INADDR_ANY;if (bind(serverSocket, (struct sockaddr*)serverAddress, sizeof(serverAddress)) SOCKET_ERROR) {std::cout Failed to bind socket std::endl;return -1;}if (listen(serverSocket, SOMAXCONN) SOCKET_ERROR) {std::cout Failed to listen on socket std::endl;return -1;}std::cout Waiting for incoming connections... std::endl;SOCKET clientSocket;sockaddr_in clientAddress;int clientAddressSize sizeof(clientAddress);while ((clientSocket accept(serverSocket, (struct sockaddr*)clientAddress, clientAddressSize)) ! INVALID_SOCKET) {std::cout Client connected std::endl;char buffer[4096];memset(buffer, 0, sizeof(buffer));if (recv(clientSocket, buffer, sizeof(buffer), 0) SOCKET_ERROR) {std::cout Failed to receive data from client std::endl;break;}std::cout Received data from client: buffer std::endl;const char* response Hello from server!;if (send(clientSocket, response, strlen(response), 0) SOCKET_ERROR) {std::cout Failed to send data to client std::endl;break;}closesocket(clientSocket);std::cout Client disconnected std::endl;}closesocket(serverSocket);WSACleanup();return 0;
}