#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include<ctype.h>#include<arpa/inet.h>#define SERVER_PORT 666intmain(void){
int server_socket,client_socket;
structsockaddr_inserver_address;structsockaddr_inclient_address;socklen_t client_address_length;
client_address_length = sizeof(client_address);
/* 1. create server socket
arguments: AF_INET -> use IPv4
SOCK_STREAM -> use tcp
*/
server_socket = socket(AF_INET,SOCK_STREAM,0);
// 2. clear server_address and write server address and server port
bzero(&server_address,sizeof(server_address));
server_address.sin_family = AF_INET; // ipv4
server_address.sin_addr.s_addr = htonl(INADDR_ANY); // designate all ip address
server_address.sin_port = htons(SERVER_PORT); // designate server port// 3. bind sevrer ip and port to server socket
bind(server_socket,(struct sockaddr *)&server_address,sizeof(server_address));
// 4. start to listen
listen(server_socket,1024);
printf("wait client message .....\n");
// start process client's requestint done = 1;
while(done){
int message_length;
char client_ip_address[64];
char buffer[256];
// start accept client request in order to client socket
client_socket = accept(server_socket,(struct sockaddr *)&client_address,&client_address_length);
// print client's ip and portprintf("client ip: %s\tport: %d\n",inet_ntop(AF_INET,&client_address.sin_addr.s_addr,client_ip_address,sizeof(client_ip_address)),ntohs(client_address.sin_port));
// read client message// -1 to prevent over the border
message_length = read(client_socket,buffer,sizeof(buffer)-1);
// set string end symbol
buffer[message_length] = '\0';
printf("receive[%d]: %s\n",message_length,buffer);
// lower letter convert to upper letter(a-z -> A-Z)for(int i = 0; i < message_length; i ++){
buffer[i] = toupper(buffer[i]);
}
// client's message write back to client
write(client_socket,buffer,message_length);
printf("finished len: %d\n",message_length);
// over client's connect
close(client_socket);
}
// over server's connect
close(server_socket);
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现