⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 操作系统内核编程TCP通讯的服务器端与客户端的C语言源码
💻 CPP
字号:
#include <iostream.h>
#include <winsock.h>

#define DEFAULT_PORT 4000             //默认端口号
DWORD WINAPI ThreadFunc(LPVOID pParam);   //服务器端socket接收线程函数
char info[255];
bool isConnect;

void main()
{
	WORD wVersionRequested=MAKEWORD(2,2);
	WSADATA wsaData;

	WSAStartup(wVersionRequested,&wsaData);

	SOCKET sClntSock=socket(AF_INET,SOCK_STREAM,0);//TCP/IP连接

    sockaddr_in addr;
	sockaddr_in ServAddr;
	int nSockErr;

	u_long arg=1;

	addr.sin_family=AF_INET;
	addr.sin_port=htons(DEFAULT_PORT);
    addr.sin_addr.s_addr=htonl(INADDR_ANY);

	if(bind(sClntSock,(LPSOCKADDR)&addr,sizeof(addr))==SOCKET_ERROR)
	{
		nSockErr=WSAGetLastError();
	}

	ServAddr.sin_family =AF_INET;
	ServAddr.sin_port =htons(DEFAULT_PORT);
    cout<<"Please input the ip of server:";
	char add_ip[50];
	cin>>add_ip;
	char dummy;
	cin.get(dummy);

	ServAddr.sin_addr.s_addr=inet_addr(add_ip);
	
	if(connect(sClntSock,(const sockaddr*)(&ServAddr),sizeof(ServAddr))==SOCKET_ERROR)
	{
		nSockErr=WSAGetLastError();
	}
	else 
		cout<<"*********************Connect successful.*****************"<<endl;

	CreateThread(NULL,0,ThreadFunc,&sClntSock,0,NULL);
			
	cout<<">";
	cin.getline(info,255);
	while(strcmp(info,"bye")){
		send(sClntSock,info,255,0);
		cout<<">";
		cin.getline (info,255);
	}
}

DWORD WINAPI ThreadFunc(LPVOID pParam)
{
	SOCKET *s=(SOCKET*)pParam;
	char in[255];
	while(strcmp(info,"bye")){
		if(recv(*s,in,255,0)!=SOCKET_ERROR)
		{
			cout<<"\b"<<in<<endl<<">";
			cout.flush();
		}
		else
		{
			cout<<"************ServerDown************"<<endl;
			exit(0);
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -