网络编程之udp

来源:互联网 发布:嘉兴华点软件学院 编辑:程序博客网 时间:2024/05/01 21:35
客户端:
#include<iostream>#include<windows.h>using namespace std;#pragma comment(lib,"ws2_32.lib")#define PORT 1688#define IP "127.0.0.1"int main(){INT Ret;WSADATA wsaData;if ((Ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0){printf("WSAStartup() failes with error %d\n", Ret);WSACleanup();return -1;}SOCKET sockCli;sockCli = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addrSer;addrSer.sin_addr.S_un.S_addr = inet_addr(IP);addrSer.sin_family = AF_INET;addrSer.sin_port = htons(PORT);        //与TCP相比较而言,省去了连接的步骤        char send[256];char recv[256];int len = sizeof(SOCKADDR_IN);while (1){cout << "Cli:>";cin >> send;sendto(sockCli, send, strlen(send) + 1, 0, (SOCKADDR *)&addrSer, len);cout << "Ser:>";recvfrom(sockCli, recv, sizeof(recv), 0, (SOCKADDR *)&addrSer, &len);cout << send << endl;}closesocket(sockCli);WSACleanup();return 0;}


服务器端:

#include<iostream>#include<windows.h>using namespace std;#pragma comment(lib,"ws2_32.lib")#define PORT 1688#define IP "127.0.0.1"int main(){//协商版本号INT Ret;WSADATA wsaData;if ((Ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0){printf("WSAStartup() failes with error %d\n", Ret);WSACleanup();return -1;}//创建套接字SOCKET sockSer;sockSer = socket(AF_INET, SOCK_DGRAM, 0);//创建地址结构体SOCKADDR_IN addrSer, addrCli;addrSer.sin_family = AF_INET;addrSer.sin_port = htons(PORT);addrSer.sin_addr.S_un.S_addr = inet_addr(IP);//将地址与套接字绑定int len = sizeof(SOCKADDR);bind(sockSer, (SOCKADDR *)&addrSer, len);cout << "server is waiting to link ...." << endl;//进行连接//accept(sockSer, (SOCKADDR *)&addrCli, &len);char recv[256];char send[256];        //少了等待连接的步骤while (1){recvfrom(sockSer, recv, sizeof(recv), 0, (SOCKADDR *)&addrCli, &len);cout << "Cli:>" << recv << endl;cin >> send;sendto(sockSer, send, strlen(send) + 1, 0, (SOCKADDR *)&addrCli, len);}closesocket(sockSer);WSACleanup();return 0;}


0 0
原创粉丝点击