simple udp

来源:互联网 发布:sql case语句用法实例 编辑:程序博客网 时间:2024/06/16 07:11
/****************************************************************************@File Name: server.cpp@Author: wangzhicheng@mail: 2363702560@qq.com@Created Time: Sun 05 Mar 2017 03:47:08 PM CST****************************************************************************/#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <iostream>using namespace std;static const int PORT_SERV = 8888;int main(int argc, char*argv[]){int sock;struct sockaddr_in from; struct sockaddr_in local;socklen_t from_len = sizeof(from); int n;  char buf[128];sock = socket(AF_INET, SOCK_DGRAM, 0);if(sock < 0){cerr << "sock init failed...!" << endl;return -1;}local.sin_family = AF_INET;  local.sin_port = htons(PORT_SERV); local.sin_addr.s_addr = htonl(INADDR_ANY);if(bind(sock, (struct sockaddr*)&local,sizeof(local)) < 0){cerr << "bind failed...!" << endl;return -2;}n = recvfrom(sock, buf, 128, 0, (struct sockaddr*)&from, &from_len);if(n <= 0){cerr << "recv failed...!" << endl;return -3;}cout << buf << endl;close(sock);return 0;}/****************************************************************************@File Name: client.cpp@Author: wangzhicheng@mail: 2363702560@qq.com@Created Time: Sun 05 Mar 2017 03:59:34 PM CST****************************************************************************/#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <iostream>using namespace std;int main(int argc, char*argv[]){int sock;struct sockaddr_in addr_serv;  struct sockaddr_in local;//struct sockaddr_in to;socklen_t len = sizeof(local);int n;char buf[128] = {0};sock = socket(AF_INET, SOCK_DGRAM, 0);if(sock < 0){cerr << "sock init failed...!" << endl;return -1;}strcpy(buf, "hello world...!\n");addr_serv.sin_family = AF_INET; addr_serv.sin_addr.s_addr = inet_addr("10.204.176.40");addr_serv.sin_port = htons(8888);//to.sin_family = AF_INET;//to.sin_port = htons(8888);//to.sin_addr.s_addr = inet_addr("127.0.0.1");if(connect(sock, (struct sockaddr*)&addr_serv, sizeof(addr_serv)) < 0){cerr << "client connect server failed...!" << endl;return -2;}getsockname(sock, (struct sockaddr*)&local, &len);cout << "UDP local addr = " << inet_ntoa(local.sin_addr) << endl;n = sendto(sock, buf, sizeof buf, 0, (struct sockaddr*)&addr_serv, sizeof(addr_serv));if(n <= 0){cerr << "client send failed...!" << endl;return -3;}close(sock);return 0;}

0 0