windows TCP socket在C++下的编程入门 3

 连接到远程主机(作为客户)

   让我们尝试下用简单的能连接远程电脑的代码能解决什么。这样能让你更好的理解所有这些是怎么工作的以及防止出现混乱。

你需要找出你所要连接的远程计算机的信息,然后传递一个指针到这个神奇的函数结构,connect(),这个结构以及API见下面的列表,注意形式参数sin_zero是不需要的所以为空值

  struct sockaddr_in

 {

  short sin_family;

 u_short  sin_port;

  struct in_addr sin_addr;

 char sin_zero[8];

};

int PASCA; connect(SOCKET ,const struct sockadde*,int);

我强烈建议你自己手动敲出这里给出的所有代码,而不是简单的复制粘贴到你的编译器,虽然我知道这样可能会拖慢脚步,我相信并且经验告诉我手动敲代码会比你单纯的复制粘贴帮助你更好的理解程序。

 //连接远程主机(清空申请)

//包含头文件

//不要忘记链接 libws2_32.a 到你的程序

#include<winsock.h>

SOCKET s; //socket 句柄

//连接-连接远程主机

bool ConnectTohost(int portNo, char* IPAddress)

 {

  //开始winsock

 WSADATA wsadata;

 int  error = WSAStartup(0x0202,&wsadata);

  //有什么事发生了吗?

 if(error)

     return false;

//我们得到了正确的winsock版本吗?

if(wssadata.WVersion !=0x0202)

 {

  WSACleanup();//清除winsock

 return false;

 }

 //填充需要初始化socket的信息

 SOCKADDR_IN target;//socket地址信息

target.sin_family=AF_INET;//地址家庭网络

target.sin_port = htons(PortNo);.//所需要连接的端口

target.sin_addr.s_addr = intet_addr(IPAddress);//目标IP


s= socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//建立socket

if(s==INVALID_SOCKET)

 {

  return false;//创建socket失败

}

//试着连接.......

if(connect(s, (SOCKADDR*)&target,sizeof(target))==SOCKET_ERROR)

{

 return false;//连接失败

}

else

  return true;//成功

}

//CLOSECONNECTION-关闭socket以及关闭所有与它的连接

void CloseConnection()

{

   //如果存在socket存在则关闭

  if(s)

    Closesocket(s);

 WSACleanup();//清除winsock

}

在你看接下来的东西以前,敲以上代码并运行看看。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值