📄 server.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")
#define SERVPORT 3333 /* 服务器监听端口号 */
#define BACKLOG 10 /* 最大同时连接请求数 */
void main()
{
WORD wVersionRequested;
WSADATA WSAData;
wVersionRequested = MAKEWORD(1, 1);
if (0 != WSAStartup(wVersionRequested, &WSAData))
{
printf("加载套接字错误!");
exit(1);
}
int sockfd,client_fd; /* sock_fd:监听socket;client_fd:数据传输socket */
struct sockaddr_in my_addr; /* 本机地址信息 */
struct sockaddr_in remote_addr; /* 客户端地址信息 */
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("创建套接字错误!");
WSACleanup();
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=0;//htons(SERVPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
if (SOCKET_ERROR == bind(sockfd, (struct sockaddr*)&my_addr, sizeof(struct sockaddr)))
{
printf("绑定套接字错误!");
closesocket(sockfd);
WSACleanup();
exit(1);
}
int nLen = sizeof(my_addr);
int iPort = getsockname(sockfd, (struct sockaddr*)&my_addr, &nLen);
printf("%d\n", ntohs(my_addr.sin_port));
if (SOCKET_ERROR == listen(sockfd, BACKLOG))
{
printf("监听套接字错误!");
closesocket(sockfd);
WSACleanup();
exit(1);
}
int sin_size = sizeof(struct sockaddr_in);
while (1)
{
if ((client_fd = accept(sockfd, (struct sockaddr*)&remote_addr, &sin_size)) == SOCKET_ERROR)
{
printf("接受套接字错误!");
closesocket(sockfd);
WSACleanup();
exit(1);
}
printf("received a connection from %s\n", inet_ntoa(remote_addr.sin_addr));
if (SOCKET_ERROR == send(client_fd, "Hello, you are connected!\n", 26, 0))
{
printf("发送数据错误!");
closesocket(sockfd);
closesocket(client_fd);
WSACleanup();
exit(1);
}
printf("发送数据成功!");
closesocket(client_fd);
}
closesocket(sockfd);
closesocket(client_fd);
WSACleanup();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -