一 前言
上次实现了客户端的TCP通信代码,这次来实现TCP服务端.
二 代码实现
2.代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#define MAX_LINE 1024
#define LISTENQ 10 //最大连接数量/2
void send_error(char *error);
int main () {
int sockfd ,connfd;//套接字、连接描述符
struct sockaddr_in servaddr;
char message[MAX_LINE]="";
if( (sockfd = socket(AF_INET,SOCK_STREAM,0)) <0) {
send_error("socket error");
}
//初始化套接字结构,TCP协议,server IP and port
bzero(&servaddr,sizeof(servaddr));//清0操作
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(5330);//port
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
if( bind(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr)) < 0)
send_error("blind error");
if(listen(sockfd,LISTENQ) <0)
send_error("listen error");
while (1) {
if( (connfd = accept(sockfd,(struct sockaddr *)NULL,NULL) ) <0)
send_error("46 accept error");
time_t ticks;
if( (ticks= time(NULL))<0){
send_error("time error");
}
snprintf(message,sizeof(message),"%24s\r\n",ctime(&ticks));
if (write(connfd,message,strlen(message))<0) {
send_error("write error");
}
if( close (connfd)<0) {
send_error("close error");
}
}
return 0;
}
void send_error(char *error){
perror(error);
exit(0);
}
3 代码调试
可利用网上的免费网络调试助手(USR-TCP232-Test V1.4.exe)或者用客户端代码进行调试