windows下的几种通讯方式之TCP
2015-12-16 12:25
786 查看
网络客户端开发(TCP)
#pragma comment(lib,Ws2_32.lib")
#include <Winsock32.h>
#include <iostream>
using namespace std
void main()
{
cout<<"----------------------客户端开发---------------------"<<endl;
SOCKET socket;
struct sockaddr_in add;
int servport = 5000;
char buff[256];
int len;
WSADATA ws;
WORD wsversionRequested;
wsversionRequested = MAKEWORD(2,2);
if(WSAStartup(wsversionRequested,&ws) != 0)
{
cout<<"初始化DLL失败";
return ;
}
sock = socket(AF_INET,SOCK_STREAM,0);
memset(&add,0,sizeof(add));//初始化地址结构为0
add.sin_famile = AF_INET;
add.sin_port = htons(servport);
add.sin_addr.sun.s_addr = inet_addr("127.0.0.1");
connect (sock,(const sockaddr*)&add,sizeof(add));
memset(&buff,0,sizeof(buff));
len = recv(sock,biff.sizeof(buff),0);
cout<<buff<<endl;
closesocket(sock);
WSAcleanup();
}
第1,2行是使用套接字必须包含的库文件和头文件,9-11行定义套接字变量,12,13行定义获取信息的变量,14-21初始化套接字DLL,22-27行创建套接字,并初始化有关信息,28-30行初始化获取数据变量,并输出数据
网络服务端开发
#pragma comment(lib,"Ws2_32.lib")
#include <Winsock2,h>
#include <iostream>
using nemaspace std;
int main()
{
cout<<"-----------------服务端开发-------------------";
SOCKET sersock,clisock;
struct sockaddr_in add;
struct sockaddr_in cliaddr;
int serport = 5000;
char buff[256];
WSADATA ws;
int len;
WORD wVersionRequested = MAKEWORD(2,2);
if(WSAStartup(wVersionRequested, &ws) != 0)
{
cout<<"初始化dll失败";
return;
}
cout<<"创建套接字中.....";
sersock = socket(AF_INET,SOCK_STREAM,0);
memset(&add,0,sizeof(add));
add.sin_family = AF_INET;
add.sin_port = htons(serport);
add_sin_addr.sun.s_addr = INADDR_ANY;
//对任意IP通信
cout<<"正在绑定中"<<endl;
if(bind(sersock,(const sockaddr*)&add,sizeof(add)) != 0)
//绑定套接字
{
cout<<"绑定失败"<<WSAGetLastError()<<endl;
return;
}
cout<<"正在监听中..."<<endl;
if(listen(sersock,5) != 0)
{
cout<<"监听失败"<<WSAGetLastError()<<endl;
return ;
}
cout<<"等待连接请求中..."<<endl;
len = sizeof(cliaddr);
clisock = accept(sersock,(struct sockaddr *)&cliaddr,&len);
//接受连接请求
cout<<"接受客户端连接请求"<<inet_ntoa(cliaddr.sin_addr)<<ntohs(cliaddr.sin_port)<<endl
sprintf(buff,"大家好%s",inet_ntoa(cliaddr,sin_addr));
send(clisock,buff,strlen(buff),0);
closesocket(clisock);
closesocket(sersock);
WSACleanup();
}.
与开发客户端程序一样,第9-17行定义各种类变量,18-22行初始化Winsock,23-28行初始化服务器端套接字,30-35对套接字进行绑定,36-41监听客户端信息,42-46等待客户端的连接请求,47输出服务器端发送的信息,48发送数据
#pragma comment(lib,Ws2_32.lib")
#include <Winsock32.h>
#include <iostream>
using namespace std
void main()
{
cout<<"----------------------客户端开发---------------------"<<endl;
SOCKET socket;
struct sockaddr_in add;
int servport = 5000;
char buff[256];
int len;
WSADATA ws;
WORD wsversionRequested;
wsversionRequested = MAKEWORD(2,2);
if(WSAStartup(wsversionRequested,&ws) != 0)
{
cout<<"初始化DLL失败";
return ;
}
sock = socket(AF_INET,SOCK_STREAM,0);
memset(&add,0,sizeof(add));//初始化地址结构为0
add.sin_famile = AF_INET;
add.sin_port = htons(servport);
add.sin_addr.sun.s_addr = inet_addr("127.0.0.1");
connect (sock,(const sockaddr*)&add,sizeof(add));
memset(&buff,0,sizeof(buff));
len = recv(sock,biff.sizeof(buff),0);
cout<<buff<<endl;
closesocket(sock);
WSAcleanup();
}
第1,2行是使用套接字必须包含的库文件和头文件,9-11行定义套接字变量,12,13行定义获取信息的变量,14-21初始化套接字DLL,22-27行创建套接字,并初始化有关信息,28-30行初始化获取数据变量,并输出数据
网络服务端开发
#pragma comment(lib,"Ws2_32.lib")
#include <Winsock2,h>
#include <iostream>
using nemaspace std;
int main()
{
cout<<"-----------------服务端开发-------------------";
SOCKET sersock,clisock;
struct sockaddr_in add;
struct sockaddr_in cliaddr;
int serport = 5000;
char buff[256];
WSADATA ws;
int len;
WORD wVersionRequested = MAKEWORD(2,2);
if(WSAStartup(wVersionRequested, &ws) != 0)
{
cout<<"初始化dll失败";
return;
}
cout<<"创建套接字中.....";
sersock = socket(AF_INET,SOCK_STREAM,0);
memset(&add,0,sizeof(add));
add.sin_family = AF_INET;
add.sin_port = htons(serport);
add_sin_addr.sun.s_addr = INADDR_ANY;
//对任意IP通信
cout<<"正在绑定中"<<endl;
if(bind(sersock,(const sockaddr*)&add,sizeof(add)) != 0)
//绑定套接字
{
cout<<"绑定失败"<<WSAGetLastError()<<endl;
return;
}
cout<<"正在监听中..."<<endl;
if(listen(sersock,5) != 0)
{
cout<<"监听失败"<<WSAGetLastError()<<endl;
return ;
}
cout<<"等待连接请求中..."<<endl;
len = sizeof(cliaddr);
clisock = accept(sersock,(struct sockaddr *)&cliaddr,&len);
//接受连接请求
cout<<"接受客户端连接请求"<<inet_ntoa(cliaddr.sin_addr)<<ntohs(cliaddr.sin_port)<<endl
sprintf(buff,"大家好%s",inet_ntoa(cliaddr,sin_addr));
send(clisock,buff,strlen(buff),0);
closesocket(clisock);
closesocket(sersock);
WSACleanup();
}.
与开发客户端程序一样,第9-17行定义各种类变量,18-22行初始化Winsock,23-28行初始化服务器端套接字,30-35对套接字进行绑定,36-41监听客户端信息,42-46等待客户端的连接请求,47输出服务器端发送的信息,48发送数据
相关文章推荐
- 开启tomcat的SSL(https)支持
- [网络管理]windows server backup
- charles中如何对https抓包
- HTTPS(SSL加密)webservice客户端访问总结
- Neural Networks for Machine Learning 课程笔记
- python requests https 访问出错
- Win下如何查看本地计算机的网络端口被哪个应用程序所占用
- 浅析okHttp
- TCP端口状态详解
- Java实现http与https切换
- TCP/IP(7)-广播和多播,IGMP协议
- Java安全通信:HTTPS与SSL
- centOS环境搭建https协议访问的svn服务
- 《TCP/IP详解》卷2实现中关于组播的处理描述
- 一个http请求的详细过程
- TCP/IP(6)-UDP协议
- Https通讯原理
- https知识了解与javaweb中如何使用https
- WIZnet通过启动在线培训活动:计算机网络TCP/IP协议而事实上,现在的方法
- TCP/IP(5)-IP选路,动态选路,和一些细节