启动TCP Socket客户端

#include "stdafx.h"

#include <WINSOCK2.H>

#include <string>

#include <iostream>

#pragma comment(lib,"WS2_32.lib")

#define BUF_SIZE 64

 

 

 

int _tmain(int argc, _TCHAR* argv[])

{

       WSADATAwsd;

       SOCKETsHost;

       SOCKADDR_INservAddr;

       charbuf[BUF_SIZE];

       intretVal;

 

       //初始化Socket动态库

       if(WSAStartup(MAKEWORD(2,2),&wsd)!= 0){

              printf("WSAStartupfailed !\n");

              return1;

       }

 

       //创建用于通信的Socket

       sHost= socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

       if(INVALID_SOCKET== sHost){

              printf("socketfailed !\n");

              WSACleanup();

              return-1;

       }

 

       //设置服务器Socket地址

       servAddr.sin_family= AF_INET;

       //用户根据实际情况更改IP地址

       servAddr.sin_addr.S_un.S_addr= inet_addr("127.0.0.1");

       //在实际应用中,建议将服务器的IP地址和端口号保存在配置文件中

       servAddr.sin_port= htons(9990);

       //计算地址的长度

       intsServerAddlen = sizeof(servAddr);

 

       //连接服务器

       retVal= connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));

       if(SOCKET_ERROR== retVal){

              printf("connectfailed !\n");

              closesocket(sHost);

              WSACleanup();

              return-1;

       }

 

       //循环向服务器发送字符串,并显示反馈信息

       //发送“quit”将使服务器程序退出,同时客户端程序自身也将退出

       while(true){

              //向服务器发送数据

              printf("Pleaseinput a string to send: ");

              std::stringstr;

              //接收输入的数据

              std::getline(std::cin,str);

              //将用户输入的数据复制到buf中

              ZeroMemory(buf,BUF_SIZE);

              strcpy(buf,str.c_str());

              //向服务器发送数据

              retVal= send(sHost,buf,strlen(buf),0);

              if(SOCKET_ERROR== retVal){

                     printf("sendfialed !\n");

                     closesocket(sHost);

                     WSACleanup();

                     return-1;

              }

              //接收服务器回传的数据

              retVal= recv(sHost,buf,sizeof(buf)+1,0);

              printf("RecvFrom Server: %s\n",buf);

              //如果收到“quit”则退出

              if(strcmp(buf,"quit")== 0){

                     printf("quit!\n");

                     break;

              }

       }

 

       //释放资源

       closesocket(sHost);

       WSACleanup();

       //暂停,按任意键继续

       system("pause");

 

 

       return0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值