您的位置:首页 > 理论基础 > 计算机网络

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发送数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: