C++ socket编程
来源:互联网 发布:淘宝用是谁写的 编辑:程序博客网 时间:2024/05/24 15:39
源代码项目下载:http://download.csdn.net/detail/mmyzlinyingjie/7049499
TCP类的:
TcpServer.cpp
//WSAStartup socket bind listen accept send/recv closesocket WSACleanup#include <winsock2.h>#include <stdio.h>#include <iostream>#include <windows.h>using namespace std;#pragma comment (lib,"ws2_32")#pragma comment (lib,"winmm")#define NAME_LEN 20int main(int argc , char* grgv[]){ cout<<"This is Server cmd"<<endl; WSADATA wsaData; WSAStartup(MAKEWORD(2,2),&wsaData); //这个是服务器的socket,用来绑定网卡来监听 SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in addr; addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); addr.sin_port = htons(827); addr.sin_family = PF_INET; bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); listen(s,1); SOCKADDR clientAddr; int nSize = sizeof(SOCKADDR); //这个socket用来接收客户端发过来的信息 SOCKET clientSock; //阻塞式,有客户端来连接时才会往下执行 //执行到这一步,说明客户端和服务器已经建立了连接 clientSock = accept(s,(SOCKADDR*)&clientAddr,&nSize); cout<<"sending..."<<endl; send(clientSock,"hello client \r\n",strlen("hello client \r\n" + sizeof(char)),NULL); cout<<"sended"<<endl; //不断的接收客户端发送过来的信息 while(TRUE) { char buff[MAXBYTE] = {0}; //接收客户端发来的命令 int i=1; i = recv(clientSock,buff,MAXBYTE,0); if(i != -1) cout<<"from client :"<<buff<<endl; } closesocket(clientSock); closesocket(s); WSACleanup(); return 0;}
TcpClient.cpp
#include <stdio.h>#include <winsock2.h>#include <iostream>#include <conio.h>#include <string>using namespace std;#pragma comment (lib,"ws2_32")#define NAME_LEN 20int main(int argc,char* argv[]){ cout<<"This is Client cmd"<<endl; WSADATA wsaData; WSAStartup(MAKEWORD(2,2),&wsaData); //创建一个socket来连接服务端 SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in addr; addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); addr.sin_family = PF_INET; addr.sin_port = htons(827); //这条执行后,说明和服务端建立了连接 connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); char Buff[MAXBYTE] = {0}; char Cmd[MAXBYTE] = {0}; recv(s,Buff , MAXBYTE,0); cout<<"from server:"<<Buff<<endl; //不断地给服务端发送信息 while(TRUE) { cin>>Cmd; cout<<"you input command is:"<<Cmd<<endl; send(s,Cmd,MAXBYTE,0); } getchar(); WSACleanup(); return 0;}
运行结果:
UDP:
UDPServer.cpp
#include <winsock2.h>#include <stdio.h>#include <iostream>#include <windows.h>using namespace std;#pragma comment (lib,"ws2_32")#pragma comment (lib,"winmm")int main(){ printf("This is UDP Server\n"); WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(1 , 1 ); WSAStartup( wVersionRequested, &wsaData ); SOCKET socketServer = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addr; addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addr.sin_family = AF_INET; addr.sin_port = htons(6000); bind(socketServer,(SOCKADDR*)&addr,sizeof(SOCKADDR)); int len = sizeof(SOCKADDR); SOCKADDR_IN addrClient; char buf[100]; recvfrom(socketServer,buf,sizeof(buf),0,(SOCKADDR*)&addrClient,&len); printf("%s",buf); closesocket(socketServer); WSACleanup(); return 0;}
UDPClient.cpp
#include <winsock2.h>#include <stdio.h>#include <iostream>#include <windows.h>using namespace std;#pragma comment (lib,"ws2_32")#pragma comment (lib,"winmm")int main(){ printf("This is UDP Client\n"); WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(1 , 1 ); WSAStartup( wVersionRequested, &wsaData ); SOCKET socketClient = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addr; addr.sin_addr.S_un.S_addr = inet_addr("10.21.23.117");//"10.21.23.117"是你要发送的目的地 addr.sin_family = AF_INET; addr.sin_port = htons(6000); char buf[100]; sprintf(buf,"i MYNONA from cclient\n",inet_ntoa(addr.sin_addr)); sendto(socketClient,buf,sizeof(buf)+1,0,(SOCKADDR*)&addr,sizeof(SOCKADDR)); closesocket(socketClient); WSACleanup(); return 0;}
运行结果:
0 0
- C#socket编程
- Linux-C-Socket编程
- Linux-C-Socket编程
- C#Socket编程
- C#Socket编程
- c#socket编程基础
- C#Socket编程
- C#Socket编程
- Linux-C-Socket编程
- [C#] Socket编程实例
- [C#] Socket编程实例
- [C#] Socket编程实例
- C#Socket基本编程
- 【C#】Socket编程
- C#Socket编程
- Socket编程(C#)
- Socket编程(C#)
- c#socket 编程基础
- 第一周作业--我的思维图
- 数据库操作类util
- PAT:1032. Sharing (25)
- 防火墙设置:虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)
- eclipse,myeclipse svn 和jadclipse 反编译插件 及安装
- C++ socket编程
- java socket编程
- 监听本机端口获取数据
- 将博客搬至CSDN
- JAVA 编码机制
- 静态加载问题
- 如何创建和使用无模式对话框
- 中间缓存变量机制
- PHP