📄 server.c
字号:
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define PORT 2345
#define BACKLOG 5
#define MAXDATASIZE 100
int main(void)
{
int listenfd, connectfd,numberb;
struct sockaddr_in server, client;
int sin_size,i;
char buf1[MAXDATASIZE];
char buf2[MAXDATASIZE];
int opt = SO_REUSEADDR;
if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("Create socket failed.");
exit(-1);
}
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
bzero(&server, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(listenfd, (struct sockaddr *)&server, sizeof(struct sockaddr))==-1)
{
perror("Bind error.");
exit(-1);
}
if (listen(listenfd, BACKLOG) == -1)
{
perror("Listen error.");
exit(-1);
}
sin_size = sizeof(struct sockaddr_in);
while(1)
{
if ((connectfd = accept(listenfd, (struct sockaddr *)&client, &sin_size)) == -1)
{
perror("accept error.");
exit(-1);
}
printf("You get a connection from %s\n", inet_ntoa(client.sin_addr));
if((numberb=recv(connectfd, buf1, MAXDATASIZE, 0)) != -1)
{
buf1[numberb]='\0';
printf("Client Message: %s\n",buf1);
if((strcmp(buf1,"quit"))!=0)
{
for(i=0;i<=numberb;i++)
{
buf2[i]=buf1[numberb-i-1];
}
buf2[numberb]='\0';
send(connectfd,buf2,numberb,0);
}
else
{
send(connectfd,"goodbye",7,0);
perror("revc error.");
exit(1);
}
}
close(connectfd);
} /* while */
close(listenfd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -