#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <errno.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main (int argc, char **argv)
{
struct sockaddr_in s_addr;
struct sockaddr_in c_addr;
int sock;
int len;
char buff[128];
socklen_t addr_len;
/*建立 socket 对象,第 2 个参数表明使用的是 UDP 数据报*/
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
perror ("socket");
exit (errno);
} else
printf ("create socket successfully\n");
memset (&s_addr, 0, sizeof (struct sockaddr_in));
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons (8888); /*通过 8888 端口进行通信*/
s_addr.sin_addr.s_addr = INADDR_ANY; /*绑定再任何网口上*/
if ((bind(sock, (struct sockaddr *)&s_addr, sizeof(s_addr))) == -1) {
perror ("bind");
exit (errno);
} else
printf ("bind address to socket. \n\r");
addr_len = sizeof (c_addr);
while (1) {
len = recvfrom (sock, buff, sizeof(buff) - 1, 0,
(struct sockaddr *)&c_addr, &addr_len);
if (len < 0) {
perror ("recvfrom");
exit (errno);
}
/*接收到的字符串数据不包含 '\0',在这里添加上*/
buff[len] = '\0';
printf ("recive come from %s:%d message:%s\n\r",
inet_ntoa (c_addr.sin_addr),ntohs (c_addr.sin_port), buff);
}
return (0);
}
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <errno.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main (int argc, char **argv)
{
struct sockaddr_in s_addr;
int sock;
int addr_len;
int len;
char buff[128];
if ((sock = socket (AF_INET, SOCK_DGRAM, 0)) == -1) {
perror ("socket");
exit (errno);
} else
printf ("create socket. \n\r");
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons(8888);
if (argv[1]) /*在命令行中需要填写IP参数*/
s_addr.sin_addr.s_addr = inet_addr (argv[1]);
else {
printf ("input server ip!\n");
exit (0);
}
addr_len = sizeof (s_addr);
strcpy (buff, "hello world");
len = sendto (sock, buff, strlen(buff), 0, (struct sockaddr *)&s_addr, addr_len);
if (len < 0) {
printf ("\n\rsend error.\n\r");
return (3);
}
printf ("send successfully.\n\r");
return (0);
}
./udp_rev
create socket successfully
bind address to socket.
./udp_send 127.0.0.1
create socket.
send successfully.
recive come from 127.0.0.1:58888 message:hello world
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |