您的位置:首页 > 其它

socket通信之 udp协议2

2016-07-18 21:32 316 查看

服务端

步骤:
1. 创建套接字
2. 绑定ip
3. 读取数据

#include <stdio.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <linux/in.h>

#define SRV_PORT 9999

int main(int argc, char *argv[])
{

// create a socket
int srv_fd;
int ret;
char buf[128];

srv_fd = socket(AF_INET, SOCK_DGRAM, 0);   //创建套接字
if(srv_fd < 0)
{
perror("socket");
exit(1);
}

// bind addr
struct sockaddr_in  self;                 //描述本地ip和端口的信息
self.sin_family = AF_INET;
self.sin_port = htons(SRV_PORT);
//self.sin_addr.s_addr = inet_addr("192.168.7.5"); //本机器的ip
self.sin_addr.s_addr = htonl(INADDR_ANY); //本机器的所有ip
ret = bind(srv_fd, (const struct sockaddr *)&self, sizeof(self));  //绑定ip
if(ret < 0)
{
perror("bind");
exit(1);
}

struct sockaddr_in info;
socklen_t len = sizeof(info);

while(1)
{

//直接读取数据
ret = recvfrom(srv_fd, buf, 128, 0, (struct sockaddr *)&info, &len);   //读取信息
if(ret < 0)
{
perror("read");
exit(1);
}

buf[ret] = '\0';
printf("from client %s (port %d) : %s\n", inet_ntoa(info.sin_addr), ntohs(info.sin_port), buf);

}

close(srv_fd);

return 0;

}


客户端

步骤:
1. 创建套接字
2. 发送信息

#include <stdio.h>
#include <string.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <linux/in.h>

#define SRV_PORT 9999
#define SRV_IP  "192.168.7.5"

int main(int argc, char *argv[])
{

// create socket
int ret;
int count = 5;
//char *content = "hello server, come on baby";
char wbuf[128];

if(argc < 2)
{
printf("usage :  ./client  serverip\n");
exit(1);
}

int fd = socket(AF_INET, SOCK_DGRAM, 0);    //创建套接字
if(fd < 0)
{
perror("socket");
exit(1);
}

struct sockaddr_in peer;
peer.sin_family = AF_INET;
peer.sin_port = htons(SRV_PORT);
//inet_aton(SRV_IP, &peer.sin_addr);
inet_aton(argv[1], &peer.sin_addr);

while(1)
{
printf("dear, pls input your words : \n");
fgets(wbuf, 128, stdin);

ret = sendto(fd, wbuf, 128, 0, (struct sockaddr *)&peer, sizeof(peer));    //发送信息
if(ret < 0)
{
perror("sendto");
exit(1);
}
}

close(fd);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket 通信 udp