server.c
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 8080
int main() {
// 定义所需变量
int socket_desc, client_sock;
struct sockaddr_in server, client;
int addrlen = sizeof(client);
int read_size;
char client_message[2048] = {'\0'};
// 创建socket连接
socket_desc = socket(AF_INET, SOCK_STREAM, 0);
// 设置服务端IP协议、监听地址、端口
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(PORT);
// Bind绑定服务端socket连接
if ( bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0 ) {
return 1;
}
// Listen监听socket连接
listen(socket_desc, 8);
// Accept接受socket连接
while ( (client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&addrlen)) ) {
// 从客户端接收消息
while ( (read_size = recv(client_sock, client_message, sizeof(client_message), 0)) > 0 ) {
// 字符串连接null字符
strcat(client_message, "\0");
printf("receive: %s\n", client_message);
// 发送消息给客户端
write(client_sock, client_message, strlen(client_message));
printf("send back: %s\n", client_message);
// 重置client_message
memset(client_message, "\0", sizeof(client_message));
}
// 关闭客户端连接
close(client_sock);
}
return 0;
}
client.c
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 8080
int main() {
// 定义所需变量
int server_sock;
struct sockaddr_in server;
int addrlen = sizeof(server);
char *message = "hello world";
char server_message[2048] = {'\0'};
// 创建socket连接
server_sock = socket(AF_INET, SOCK_STREAM, 0);
// 设置服务端IP协议、连接地址、端口
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = htons(PORT);
// 连接服务端
connect(server_sock, (struct sockaddr *)&server, sizeof(server));
// 发送消息给服务端
send(server_sock, message, strlen(message), 0);
// 接收服务器消息
recv(server_sock, server_message, sizeof(server_message), 0);
// 字符串连接null字符
strcat(client_message, "\0");
printf("receive: %s\n", server_message);
// 关闭socket连接
close(server_sock);
return 0;
}