TCP Socket客户端编程(C++)

来源:互联网 发布:最后一战源码 编辑:程序博客网 时间:2024/04/30 00:41

代码来源:《Windows网络编程》(罗莉琴,詹祖桥 主编)(如造成任何不便,请联系我删除)

// TcpClient.cpp : 定义控制台应用程序的入口点。//#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[]){WSADATA wsd;//用于初始化Windows SocketSOCKET sHost;//与服务器进行通信的SocketSOCKADDR_IN servAddr;//服务器地址char buf[BUF_SIZE];//用于接受数据缓冲区int retVal;//调用各种Socket函数的返回值//---------初始化Socket-------------------if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0){printf("WSAStartup failed !\n");return -1;}//--------------创建Socket----------------------------sHost = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//(指定协议的地址家族,指定套接字的类型,套接字使用的协议)if (INVALID_SOCKET == sHost){printf("socket failed !\n");WSACleanup();return -1;}//----------设置服务器的Socket地址---------------------servAddr.sin_family = AF_INET;servAddr.sin_port = htons(9990);servAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);int sServerAddlen = sizeof(servAddr);//--------------连接到服务器-----------------------------retVal = connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));if (SOCKET_ERROR == retVal){printf("connect failed!\n");closesocket(sHost);WSACleanup();return -1;}//信息交互while (true){//向服务器发送数据printf("Please input a string to send:");std::string str;std::getline(std::cin,str);ZeroMemory(buf,BUF_SIZE);strcpy_s(buf,str.c_str());retVal = send(sHost,buf,strlen(buf),0);if (SOCKET_ERROR == retVal){printf("send failed!\n");closesocket(sHost);WSACleanup();return -1;}//接收服务器回传的数据retVal = recv(sHost,buf,sizeof(buf)+1,0);printf("Recv From Server:%s\n",buf);if (strcmp(buf, "quit") == 0){printf("quit!\n");break;}}//-----------释放资源------------------closesocket(sHost);WSACleanup();system("pause");return 0;}


 

0 0