📄 server.c
字号:
//----------POWERED BY BOBO---------//----------引入库函数------------------#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <arpa/inet.h>#include "des.h"//--------------------------------------#define WAITBUF 10 //定义监听队列void process_cli(int connectfd,struct sockaddr_in client);main(int argc, char *argv[]){ int listenfd, connectfd; //定义SOCKET参量 struct sockaddr_in server; //定义服务器端SOCKADDR结构 struct sockaddr_in client; //定义客户端SOCKADDR结构 unsigned int sin_size, portnumber;//定义结构参数和端口变量 if(argc != 2) //判断输入参数是否正确 { fprintf(stderr, "Usage:%s portnumber\a\n", argv[0]); exit(1); } if((portnumber = atoi(argv[1])) < 0) { fprintf(stderr, "Usage: %s portnumber error\a\n", argv[0]); } if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) //建立SOCKET并判断是否成功 { fprintf(stderr, "Socket error:%s\n\a", strerror(errno)); exit(1); } //int opt; //setsockopt(listenfd,SOL_SOCKET,SO_REUSERADDR,&opt,sizeof(opt)); bzero(&server, sizeof(struct sockaddr_in)); //重置 server.sin_family = AF_INET; //设置SOCKET DOMAIN server.sin_addr.s_addr = htonl(INADDR_ANY); //设置IP地址 server.sin_port = portnumber; //设置端口号 if(bind(listenfd,(struct sockaddr *)(&server), sizeof(struct sockaddr)) == -1) //绑定SOCKET { fprintf(stderr, "Bind error:%s\n\a", strerror(errno)); exit(1); } if(listen(listenfd, WAITBUF) == -1) //设置监听 { fprintf(stderr, "Listen error:%s\n\a", strerror(errno)); exit(1); } sin_size = sizeof(struct sockaddr_in); while(1) //此处循环等待客户端接入 { if((connectfd = accept(listenfd, (struct sockaddr *)(&client), &sin_size)) == -1) { fprintf( stderr, "Accept error:%s\n\a", strerror(errno)); exit(1); }//接收客户端信息将其存入客户端结构体 process_cli(connectfd,client); //exit(1); } close(listenfd); //exit(0);} void process_cli(int connectfd,struct sockaddr_in client){ int num; //定义接收数据长度 char recvbuf[1024],sendbuf[1024]; //定义接收发送缓冲区 char Key[8]="12345678"; fprintf(stderr, "From %s:", inet_ntoa(client.sin_addr)); while(num = recv(connectfd,recvbuf,1024,0)) //接收数据 { recvbuf[num]='\0'; printf("%s\n",recvbuf); des_go(sendbuf,recvbuf,strlen(recvbuf),Key,0); send(connectfd,sendbuf,strlen(sendbuf),0); //发送数据 //continue; } close(connectfd);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -