
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define PORT 3212
#define MAX_SIZE 512
int main(int argc, char *argv[])
{
int sockfd;
int len = sizeof(struct sockaddr);
char buf[MAX_SIZE];
char buffer[MAX_SIZE];
struct sockaddr_in serv_addr;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
{
printf("创建socket失败!");
exit(1);
}
// 填充服务器端信息
bzero(&serv_addr, sizeof(struct sockaddr_in));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = inet_addr("192.168.192.128");
// 绑定套接字
if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) < 0)
{
printf("绑定失败");
exit(1);
}
// 循环接收网络上发送来的数据并回复消息
while (1)
{
if (recvfrom(sockfd, buf, MAX_SIZE, 0, (struct sockaddr *)&serv_addr, &len) < 0)
{
printf("接收失败");
exit(1);
}
printf("recv is: %s\n", buf);
printf("write some text: ");
scanf("%s", buffer);
// 发送数据
if (sendto(sockfd, buffer, MAX_SIZE, 0, (struct sockaddr *)&serv_addr, len) < 0)
{
printf("发送失败");
fprintf(stderr, "send error: %s\n", strerror(errno));
exit(1);
}
}
close(sockfd);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define PORT 3212
#define MAX_SIZE 512
int main()
{
int sockfd;
int fromlen = sizeof(struct sockaddr);
char buf[MAX_SIZE];
char buffer[MAX_SIZE];
struct sockaddr_in serv_addr;
// 填充服务端信息
bzero(&serv_addr, sizeof(struct sockaddr_in));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = inet_addr("192.168.192.128");
// 创建套接字
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
{
printf("create socket error!\n");
exit(1);
}
// 循环发送数据到服务端及接收数据
while (1)
{
printf("enter some text: ");
scanf("%s", buf);
// 发送数据
if (sendto(sockfd, buf, MAX_SIZE, 0, (const struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) < 0)
{
printf("recv error!\n");
exit(1);
}
if (recvfrom(sockfd, buffer, MAX_SIZE, 0, (struct sockaddr *)&serv_addr, &fromlen) < 0)
{
printf("recv error!\n");
exit(1);
}
printf("recv is %s\n", buffer);
}
close(sockfd);
return 0;
}
原文:https://www.cnblogs.com/qq760153699/p/14664212.html