`
xitong
  • 浏览: 6190584 次
文章分类
社区版块
存档分类
最新评论

简单UDP通信

 
阅读更多
//udpserver.cc
#include <iostream>
#include <strings.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
using namespace std;

int main(int argc, char *argv[])
{
    //创建套接字
    int sk = socket(AF_INET, SOCK_DGRAM, 0);

    struct sockaddr_in server;
    bzero(&server, sizeof(server));
    server.sin_family = AF_INET;
    server.sin_port = htons(atoi(argv[1]));
    server.sin_addr.s_addr = htonl(INADDR_ANY);
    //绑定端口
    bind(sk, (struct sockaddr*)&server, sizeof(server));

    int len = 0;
    struct sockaddr_in client;
    bzero(&client, sizeof(client));
    size_t size = sizeof(client);
    char buff[1024] = {'\0'};
    //接收数据
    while((len = recvfrom(sk, buff, sizeof(buff), 0, (struct sockaddr*)&client, &size)) > 0)
    {
	cout << buff << endl;
    }

    //关闭套接字
    close(sk);
    return 0;
}



//udpclient.cc
#include <iostream>
#include <cstring>
#include <strings.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
using namespace std;

int main(int argc, char *argv[])
{
    //创建套接字
    int sk = socket(AF_INET, SOCK_DGRAM, 0);

    struct sockaddr_in server;
    server.sin_family = AF_INET;
    server.sin_port = htons(atoi(argv[2]));
    server.sin_addr.s_addr = inet_addr(argv[1]);

    char buff[1024] = {'\0'};
    while(1)
    {
	cin.getline(buff, sizeof(buff));
	sendto(sk, buff, sizeof(buff), 0, (struct sockaddr*)&server, sizeof(server));

	if(strcmp(buff, "quit") == 0)
	{
	    break;
	}
    }

    close(sk);
    return 0;
}

程序运行截图:

服务端:


客户端:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics