📄 server.c
字号:
#if defined(WIN32)
#include "StdAfx.h"
#include <winsock2.h>
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#endif
void main(int argc, char* argv[])
{
int cont,sock,newsock,addrlen;
int bufsize = 1024;
char *buffer = malloc(bufsize);
struct sockaddr_in address;
int err=0;
#if defined(WIN32)
WORD wVersionRequested;
WSADATA wsaData;
printf("Starting\n");
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
printf("Startup error %d\n", err);
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
printf("WinSock version is wrong.\n");
return;
}
#endif
printf("Creating socket\n");
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sock<=0)
{
printf("Fail to create socket, error %d\n", sock);
return;
}
printf("Binding socket\n");
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(8000);
err = bind(sock,(struct sockaddr *)&address,sizeof(address));
if ( err != 0)
{
printf("Fail to bind socket, error %d\n", err);
return;
}
printf("Listening\n");
listen(sock,3);
addrlen = sizeof(struct sockaddr_in);
newsock = accept(sock,(struct sockaddr *)&address,&addrlen);
if (newsock <= 0)
{
printf("Fail to accept connection, error %d\n", newsock);
return;
}
printf("The client %s is connected...\n",inet_ntoa(address.sin_addr));
do
{
printf("Message to send: ");
gets(buffer);
send(newsock,buffer,bufsize,0);
recv(newsock,buffer,bufsize,0);
printf("Message recieved: %s\n",buffer);
}while(strcmp(buffer,"/q")); //user want to quit
close(newsock);
close(sock);
#if defined(WIN32)
WSACleanup();
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -