📄 sotest.cpp
字号:
#include "afxmt.h"
#include "winsock2.h"
#pragma comment(lib,"WS2_32.LIB")
int bufi;
class mserver{
private:
SOCKET ssock,csock;
sockaddr_in saddr,caddr;
int len;
char buf[4096];
public:
mserver(){
}
mserver(int port,int maxclient){
saddr.sin_family=AF_INET;
saddr.sin_port=htons(port);
saddr.sin_addr.s_addr=INADDR_ANY;
ssock=socket(AF_INET,SOCK_STREAM,0);
if(ssock==INVALID_SOCKET){
printf("build socket error\n");
}
if(bind(ssock,(struct sockaddr*)&saddr,sizeof(saddr))==SOCKET_ERROR){
printf("socket bind fail\n");
}
len=sizeof(caddr);
}
void close(){
closesocket(ssock);
closesocket(csock);
}
void beginlisten(){
if(listen(ssock,10)==SOCKET_ERROR){
printf("listen fail\n");
}
}
void maccept(){
sockaddr a;
csock=accept(ssock,(struct sockaddr*)&caddr,&len);
if(csock==INVALID_SOCKET){
printf("accept fail : %d\n",WSAGetLastError());
}
printf("client from %s connected\n",inet_ntoa(caddr.sin_addr));
}
int receive(){
memset(buf,0,4096);
if(recv(csock,buf,4096,0)==SOCKET_ERROR){
return 0;
}
printf("message received : %s\n",buf);
send(csock,buf,4096,0);
return 1;
}
};
int main()
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,1),&wsaData)){
printf("Winsock initializing fail\n");
WSACleanup();
return 0;
}
mserver s(12345,10);
s.beginlisten();
s.maccept();
while(s.receive());
s.close();
WSACleanup();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -