使用c语言写一个使用socket跨网段通信的demo
时间: 2023-09-07 21:13:12 浏览: 95
下面是一个简单的基于socket的跨网段通信的Demo,使用C语言编写。
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#define PORT 8888
#define MAX_BUFFER_SIZE 1024
int main(int argc, char *argv[])
{
int sockfd;
struct sockaddr_in server_addr;
char buffer[MAX_BUFFER_SIZE];
int ret;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(EXIT_FAILURE);
}
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = inet_addr("192.168.1.100");
if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
perror("connect");
exit(EXIT_FAILURE);
}
while (1) {
printf("Enter message: ");
fgets(buffer, MAX_BUFFER_SIZE, stdin);
if (send(sockfd, buffer, strlen(buffer), 0) == -1) {
perror("send");
exit(EXIT_FAILURE);
}
if ((ret = recv(sockfd, buffer, MAX_BUFFER_SIZE - 1, 0)) == -1) {
perror("recv");
exit(EXIT_FAILURE);
}
buffer[ret] = '\0';
printf("Received message: %s", buffer);
}
close(sockfd);
return 0;
}
```
这个Demo实现了一个简单的客户端,可以与指定IP地址和端口号的服务器进行通信。在这个Demo中,我们使用了TCP协议进行数据传输。
在main函数中,首先创建了一个socket文件描述符,然后初始化了服务器地址结构体。在connect函数中,使用了该地址结构体来连接服务器。
然后进入了一个无限循环,每次循环中,从标准输入读取用户输入的信息,使用send函数将信息发送给服务器。然后使用recv函数接收服务器的响应,并将响应打印到标准输出中。
最后关闭了socket文件描述符,并退出程序。
需要注意的是,在实际应用中,我们需要考虑网络状况、数据的完整性、数据的安全性等问题,这里只是一个简单的Demo。
阅读全文