#include <myhead.h>
#define ERR_MSG(msg) do{\
fprintf(stderr, "__%d__", __LINE__);\
perror("msg");\
}while(0)
#define IP "192.168.10.139"
#define PORT 6666
int main(int argc, const char *argv[])
{
//获取UDP套接字
int sfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sfd < 0)
{
ERR_MSG("socket");
return -1;
}
//绑定服务器信息
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);
sin.sin_addr.s_addr = inet_addr(IP);
if (bind(sfd, (struct sockaddr *)&sin, sizeof(sin)) < 0)
{
ERR_MSG("bind");
return -1;
}
printf("bind success\n");
//接收客户端信息
struct sockaddr_in cin;
socklen_t cinler = sizeof(cin);
char buf[128]="";
while (1)
{
bzero(buf, sizeof(buf));
//接收信息
if (recvfrom(sfd, buf, sizeof(buf), 0, (struct sockaddr *)&cin, &cinler) < 0)
{
ERR_MSG("recvfrom");
return -1;
}
printf("[%d : %s] : %s\n", ntohs(cin.sin_port), inet_ntoa(cin.sin_addr), buf);
if (connect(sfd, (struct sockaddr *)&cin, sizeof(cin)) < 0)
{
ERR_MSG("connect");
return -1;
}
printf("connect success\n");
while(1)
{
bzero(buf, sizeof(buf));
//接收信息
if (recvfrom(sfd, buf, sizeof(buf), 0, (struct sockaddr *)&cin, &cinler) < 0)
{
ERR_MSG("recvfrom");
return -1;
}
printf("[%d : %s] : %s\n", ntohs(cin.sin_port), inet_ntoa(cin.sin_addr), buf);
if (strcmp(buf, "quit") == 0)
{
break;
}
//发送信息
strcat(buf, "*_*");
if (sendto(sfd, buf, sizeof(buf), 0, (struct sockaddr *)&cin, sizeof(cin)) < 0)
{
ERR_MSG("sendto");
return -1;
}
printf("发送成功\n");
}
//清除内核对端信息
cin.sin_family = AF_UNSPEC;
if (connect(sfd, (struct sockaddr *)&cin, sizeof(cin)) < 0)
{
ERR_MSG("connect");
return -1;
}
printf("清除成功\n");
}
close(sfd);
return 0;
}
#include <myhead.h>
#define ERR_MSG(msg) do{\
fprintf(stderr, "__%d__", __LINE__);\
perror("msg");\
}while(0)
#define IP "192.168.10.139"
#define PORT 6666
int main(int argc, const char *argv[])
{
//获取UDP套接字
int sfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sfd < 0)
{
ERR_MSG("socket");
return -1;
}
//绑定服务器信息
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);
sin.sin_addr.s_addr = inet_addr(IP);
//接收服务器信息
struct sockaddr_in cin;
socklen_t cinlen = sizeof(cin);
char buf[128]="";
while (1)
{
bzero(buf, sizeof(buf));
//发送信息
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf) - 1] = 0;
if (sendto(sfd, buf, sizeof(buf), 0, (struct sockaddr *)&sin, sizeof(sin)) < 0)
{
ERR_MSG("sendto");
return -1;
}
printf("发送成功\n");
//接收信息
if (recvfrom(sfd, buf, sizeof(buf), 0, (struct sockaddr *)&cin, &cinlen) < 0)
{
ERR_MSG("recvfrom");
return -1;
}
printf("[%d : %s] : %s\n", ntohs(cin.sin_port), inet_ntoa(cin.sin_addr), buf);
}
close(sfd);
return 0;
}