📄 client.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 + -