windows和linux中UDP编程
2015-07-27 11:20
676 查看
//servser.cpp
//linux:
//ser.cpp
//cli.cpp
#include <iostream> #include <windows.h> #include <stdio.h> #include <string.h> #define IP "127.0.0.1" #define PORT 8888 #pragma comment(lib,"ws2_32.lib") using namespace std; char* GetTime(); int main() { WSADATA wsaData; WORD Ret; if ((Ret = WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)) { cout << "WSAStartup() Error Whit:" << Ret << endl; WSACleanup(); return -1; }//统一版本类型。 SOCKET sockSer, sockCli; sockSer = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addrSer, addrCli; memset(&addrSer,0,sizeof(addrSer)); memset(&addrCli,0,sizeof(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); char serbuff[255]; //不需要监听连接。 while (1) { recvfrom(sockSer,serbuff,sizeof(serbuff),0,(SOCKADDR*)&addrCli,&len); cout << serbuff << endl; sendto(sockSer, GetTime(), 30, 0, (SOCKADDR*)&addrCli, len); } WSACleanup(); closesocket(sockSer); closesocket(sockCli); return 0; } char* GetTime() { char buff[255]; SYSTEMTIME sys; GetLocalTime(&sys);//初始化本地时间。 sprintf(buff,"%d:%d:%d:%d:%d:%d",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond); return buff; }
#include <iostream> #include <windows.h> #define PORT 8888 #define IP "127.0.0.1" using namespace std; #pragma comment(lib,"ws2_32.lib") int main() { DWORD Ret; WSAData wsaData; if ((Ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0) { cout <<"WSAStartup() Error Wiht : "<< Ret << endl; WSACleanup(); return -1; } SOCKET sockCli = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addrSer; addrSer.sin_family = AF_INET; addrSer.sin_port = htons(PORT); addrSer.sin_addr.S_un.S_addr = inet_addr(IP); int len = sizeof(addrSer); const char timebuff[] = "times"; char serbuff[255]; connect(sockCli,(SOCKADDR*)&addrSer,len); while (1) { sendto(sockCli,timebuff,strlen(timebuff)+1,0,(SOCKADDR*)&addrSer,len); recvfrom(sockCli,serbuff,sizeof(serbuff),0,(SOCKADDR*)&addrSer,&len); cout <<timebuff<<serbuff << endl; Sleep(2000); } return 0; }
//linux:
//ser.cpp
#include <iostream> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <string.h> #define PORT 8888 #define IP "127.0.0.1" using namespace std; int main() { int 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_addr = inet_addr(IP); socklen_t len=sizeof(sockaddr); bind(sockSer,(sockaddr*)&addrSer,len); char serbuff[255]="!Hello !I am server!"; char clibuff[255]; while(1) { recvfrom(sockSer,clibuff,sizeof(clibuff),0,(sockaddr*)&addrSer,&len); cout<<"CLient Say:"<<clibuff<<endl; sendto(sockSer,serbuff,strlen(serbuff)+1,0,(sockaddr*)&addrSer,len); } return 0; }
//cli.cpp
#include <iostream> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <stdlib.h> #include <netinet/in.h> #include <arpa/inet.h> #define PORT 8888 #define IP "127.0.0.1" using namespace std; int main() { int sockCli = socket(AF_INET,SOCK_DGRAM,0); sockaddr_in addrSer; addrSer.sin_family = AF_INET; addrSer.sin_port = htons(PORT); addrSer.sin_addr.s_addr = inet_addr(IP); socklen_t len = sizeof(sockaddr); char clibuff[]="hello! I am client!"; char serbuff[255]; while(1) { sendto(sockCli,clibuff,strlen(clibuff)+1,0,(sockaddr*)&addrSer,len); recvfrom(sockCli,serbuff,sizeof(serbuff),0,(sockaddr*)&addrSer,&len); cout<<"Server Say:>"<<serbuff<<endl; sleep(2); } return 0; }
相关文章推荐
- linux 进程与线程
- 【linux高级程序设计】(第八章)进程管理与程序开发 3
- Linux使用expect实现免手工密码输入
- Linux 内核引导参数简介
- linux下如何打补丁
- 每天一个linux命令:ln 命令
- Linux进程编程
- linux设置系统时间
- linux设置系统时间
- 深入理解Linux内核---进程
- 浅谈 linux 多线程编程和 windows 多线程编程的异同
- 对于用u盘安装CentOS后不插u盘就无法开启的解决过程
- linux下查看文件大小的命令
- LINUX关闭防火墙
- LINUX关闭防火墙
- linux解压缩tar,gz等各种文件的命令
- Linux命令详解 -- uname
- linux rz命令上传文件失败处理方法
- centos查看哪些包提供指定头文件
- centos查看哪些包提供指定头文件