?? udp.cc
字號:
#include <iostream>using namespace std;#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <fcntl.h>#include <cstring>int main(){ short port; cout << "input your port:"; cin >> port; sockaddr_in si; char ip[100]; char buf[1000]; socklen_t len=sizeof(si); char cmd; int s = socket(AF_INET, SOCK_DGRAM, 0); if(s<0){ cout << "socket error!" << endl; return -1; } si.sin_family = AF_INET; si.sin_addr.s_addr=htonl(INADDR_ANY); si.sin_port = htons(port); if(bind(s,(sockaddr*)&si,len)<0){ cout << "bind error!" << endl; return -1; } for(;;){ cout << "r/s/q:"; cin >> cmd; if(cmd=='q') break; if(cmd=='r'){ int n=recvfrom(s, buf, 1000, 0, (sockaddr*)&si, &len); if(n<0) break; buf[n] = '\0'; inet_ntop(AF_INET,&si.sin_addr,ip,100); port = ntohs(si.sin_port); cout << ip << '@' << port << ':' << buf << endl; } else if(cmd=='s'){ cout << "input ip, port and message:"; cin >> ip >> port; cin.getline(buf, 1000); si.sin_port = htons(port); inet_pton(AF_INET,ip,&si.sin_addr); sendto(s,buf,strlen(buf),0,(sockaddr*)&si,len); } else{ cout << "invalid command!" << endl; } } close(s);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -