c语言 通信,C语言实现scoket通信

C语言实现scoket通信。

服务器端:

#include

#include // 包含套接字函数库

#include

#include // 包含AF_INET相关结构

#include // 包含AF_INET相关操作的函数

#include

int main()

{

int server_sockfd, client_sockfd; // 用于保存服务器和客户套接字标识符

int server_len, client_len; // 用于保存服务器和客户消息长度

struct sockaddr_in server_address; // 定义服务器套接字地址

struct sockaddr_in client_address; // 定义客户套接字地址

server_sockfd = socket(AF_INET, SOCK_STREAM, 0); // 定义套接字类型

server_address.sin_family = AF_INET; // 定义套接字地址中的域

server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); // 定义套接字地址

server_address.sin_port = 9734; // 定义套接字端口

server_len = sizeof(server_address);

bind(server_sockfd, (struct sockaddr *) &server_address, server_len); // 定义套接字名字

listen(server_sockfd, 5); // 创建套接字队列

while (1) {

char ch;

printf("服务器等待消息\n");

client_len = sizeof(client_address);

client_sockfd = accept(server_sockfd, // 接受连接

(struct sockaddr *) &client_address,

(socklen_t *__restrict) &client_len);

read(client_sockfd, &ch, 1); // 读取客户消息

ch++;

write(client_sockfd, &ch, 1); // 向客户传送消息

close(client_sockfd); // 关闭连接

}

}

客户端:

#include

#include // 包含套接字函数库

#include

#include // 包含AF_INET相关结构

#include // 包含AF_INET相关操作的函数

#include

int main() {

int sockfd; // 用于保存客户套接字标识符

int len; // 用于客户消息长度

struct sockaddr_in address; // 定义客户套接字地址

int result;

char ch = 'A'; // 定义要传送的消息

sockfd = socket(AF_INET,SOCK_STREAM, 0); // 定义套接字类型

address.sin_family = AF_INET; // 定义套接字地址中的域

address.sin_addr.s_addr = inet_addr("127.0.0.1"); // 定义套接字地址

address.sin_port = 9734; // 定义套接字端口

len = sizeof(address);

result = connect(sockfd, (struct sockaddr *) &address, len); // 请求连接

if (result == -1) {

perror("连接失败");

return 1;

}

write(sockfd, &ch, 1); // 向服务器传送消息

read(sockfd, &ch, 1); // 从服务器接收消息

printf("来自服务器的消息是%c\n", ch);

close(sockfd); // 关闭连接

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!C语言中的Socket通信是一种用于实现网络通信的编程接口。Socket允许不同的计算机之间通过网络进行数据交换。下面是一个简单的示例代码,展示了如何在C语言中使用Socket进行基本的通信: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #define PORT 8080 int main() { int sockfd; struct sockaddr_in server_addr; char *message = "Hello, Server!"; char buffer[1024] = {0}; // 创建套接字 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("Socket creation error"); exit(EXIT_FAILURE); } memset(&server_addr, '0', sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); // 将IPv4地址从文本转换为二进制格式 if (inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr) <= 0) { perror("Invalid address/ Address not supported"); exit(EXIT_FAILURE); } // 连接服务器 if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("Connection Failed"); exit(EXIT_FAILURE); } // 发送数据 send(sockfd, message, strlen(message), 0); printf("Message sent to server: %s\n", message); // 接收服务器响应 read(sockfd, buffer, 1024); printf("Server response: %s\n", buffer); // 关闭套接字 close(sockfd); return 0; } ``` 这段代码创建了一个客户端程序,它连接到本地主机上的服务器。它首先创建一个套接字,然后将服务器的地址和端口设置为目标地址。然后,它通过调用`connect`函数来连接到服务器。一旦连接成功,它会发送一条消息给服务器,并等待服务器的响应。最后,它会关闭套接字。 请注意,这只是一个简单的示例,实际应用中可能需要添加更多的错误处理和其他功能。希望能对您有所帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值