在server端创建一个接收线程,一个发送线程
client端依旧单线程
server.cpp
// Thread.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include
#include
#include
#include
#pragma comment(lib, "ws2_32.lib")
using namespace std;
#define buf_size 30
#define PORT 4000
#define IP_ADDRESS "127.0.0.1"
//创建线程
DWORD WINAPI Recv (LPVOID ipParameter)
{
SOCKET clientSocket = (SOCKET)ipParameter;
int RET = 0;
char RecvBuffer[buf_size];
//初始化 recvBuffer
while(true){
memset(RecvBuffer,0x00,sizeof(RecvBuffer));
RET = recv(clientSocket,RecvBuffer,buf_size,0);
if(RET == 0||RET == SOCKET_ERROR)
{
cout<<"客户端退出"<
client.cpp
//#include "stdafx.h"
#include
#include
#include
#include
#pragma comment(lib, "ws2_32.lib")
using namespace std;
#define buf_size 30
#define PORT 4000
#define IP_ADDRESS "127.0.0.1"
int main(void)
{
WSADATA WSA;
SOCKET clientSocket;
struct sockaddr_in serveAddr;
int AddrLen = 0;
HANDLE hThread = NULL;
int RET = 0;
char SendBuffer[buf_size];
char RecvBuffer[buf_size];
//init windows socket
if (WSAStartup(MAKEWORD(2,2),&WSA)!= 0 )
{
cout<<"init failed"<
实验效果:
一个发送和接收是一个轮回。如果连续两次发送,那么对方必须要到第二轮回时候才能将缓冲器文本打印出来
for example:
现在服务端连续发送两次,如上所说,客户端要到第二次轮回才能显示服务器第二次发送的内容
客户端还未按回车前的状态:
按了回车后: