📄 server.cpp
字号:
#include "Winsock.h"
#include "windows.h"
#include "stdio.h"
#pragma comment(lib,"wsock32.lib")
#define RECV_PORT 2000
#define SEND_PORT 3000
SOCKET sock,sock1;
sockaddr_in ServerAddr;
sockaddr_in ClientAddr;
int Addrlen;
DWORD StartSock()
{
WSADATA WSAData;
if (WSAStartup(MAKEWORD(2,2),&WSAData)!=0) //初始化套接字
//WSAStartup:加载Winsock DLL的相应版本.
//P1:版本XY,用MAKEWORD(X,Y)来生成,X-高位字节,Y-低位字节
//P2:指向WSADATA结构的指针,接收Winsock库版本信息.
{
printf("sock init fail!\n");
return(-1);
}
return(1);
}
DWORD CreateSocket()
{
sock=socket(AF_INET,SOCK_STREAM,0); //创建套接字
//socket:创建套接字
//P1:网络类型,一般为了AF_INET,表示在Internet域中通信
//P2:套接字类型,SOCK_STREAM(会话套接字),SOCK_DGRAM(数据报套接字),SOCK_SEQPACKET,
// SOCK_RAW(原始套接字),SOCK_RDM.
//P3:网络协议,取0,表示TCP/IP.
//WSANOTINITIDLISED错误:未加载Winsock库
if (sock==SOCKET_ERROR)
{
printf("sock create fail!\n");
WSACleanup();
return(-1);
}
ServerAddr.sin_family=AF_INET; //填充服务器地址端口号
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY); //任何IP地址
ServerAddr.sin_port=htons(RECV_PORT); //IP地址上的端口
if (bind(sock,(struct sockaddr FAR *)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR)
//bind:将一本地地址写一套接字绑定.
//P1:一未绑定套接字的句柄.
//P2:套接字地址结构.
//WSAEADDRINUSE错误:另一个进程已经同本地IP地址及端口号绑定了.
{
printf("bind is the error");
return(-1);
}
return(1);
}
DWORD ConnectProcess()
{
char buff[80];
Addrlen=sizeof(sockaddr_in);
if (listen(sock,5)<0)
//listen:侦听.
//P1:一已绑定担未连接套接字的句柄.
//P2:表示等待连接队列的最大长度.
//多出的连接请求会造成一个WSAECONNEREFUSED错误.
{
printf("Listen error");
return(-1);
}
printf("Listening...\n");
for (;;)
{
sock1=accept(sock,(struct sockaddr FAR *)&ClientAddr,&Addrlen);
//sock:在指定的套接字上接受一个连接
//P1:套按字句柄,该套接字在listen()后已经侦听连接.
//P2:连接请求方SOCKADDR_IN结构的地址.
//P3:SOCKADDR_IN结构长度
for (;;)
{
memset(buff,0,80);
if (recv(sock1,buff,80,0)<=0)
//recv:接收数据.
//P1:套接字句柄.
//P2:接收缓冲区.
//P3:接收缓冲区中的长度.
//P4:调用的执行方式.
//返回实际发送的字节数.
{
break;
}
printf(buff);
// printf("\n");
}
}
}
int main()
{
if (StartSock()==-1)
return(-1);
if (CreateSocket()==-1)
return(-1);
if (ConnectProcess()==-1)
return(-1);
return(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -