zoukankan      html  css  js  c++  java
  • 网络编程实验2_(3)基于流式套接字的客户端程序设计

    #define _WINSOCK_DEPRECATED_NO_WARNINGS
    #include <iostream>
    #include <winsock2.h>
    
    using namespace std;
    
    #pragma comment(lib, "ws2_32.lib")
    
    #define PORT 7210
    #define IP_ADDRESS "192.168.0.103"
    //先用cmd命令行——ipconfig查一下自己的ip地址 #define MAX_LINE 10000 int main(int argc, char* argv[]) { WSADATA wsaData; SOCKET ClientSocket; struct sockaddr_in ServerAddr; int iResult = 0; int AddrLen = 0; HANDLE hThread = NULL; char SendBuffer[MAX_LINE]; //初始化 Windows Socket if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { cout << "Windows Socket 初始化失败::" << GetLastError() << endl; WSACleanup(); return -1; } //创建 Socket ClientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ClientSocket == INVALID_SOCKET) { cout << "Socket创建失败::" << GetLastError() << endl; closesocket(ClientSocket); WSACleanup(); return -1; } ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS); ServerAddr.sin_port = htons(PORT); memset(ServerAddr.sin_zero, 0x00, 8); //这个有两种方法, //一种是像这样给ServerAddr中的前三个参数逐一赋值后,最后给sin_zero填充0 //还有一种是,先用memset(&ServerAddr,0,sizeof(ServerAddr))对整个变量零填充,再对前三个参数逐一赋值 /* memset(&ServerAddr, 0, sizeof(ServerAddr)); ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS); ServerAddr.sin_port = htons(PORT); */ //connect //一个细节:connect的第二个参数ServerAddr设置为sockaddr_in类型的变量, //然后再connect中应当将其强转为sockaddr类型 iResult = connect(ClientSocket, (struct sockaddr*) & ServerAddr, sizeof(ServerAddr)); if (iResult == SOCKET_ERROR) { cout << "Connect Error::" << GetLastError() << endl; WSACleanup(); return -1; } else { cout << "连接成功!" << endl; } char RecvBuffer[MAX_LINE];//接收到的信息 while (true) { cin.getline(SendBuffer, sizeof(SendBuffer),'$'); iResult = send(ClientSocket, SendBuffer, (int)strlen(SendBuffer), 0); if (iResult == SOCKET_ERROR) { cout << "Send Info Error::" << GetLastError() << endl; break; } memset(RecvBuffer, 0x00, sizeof(RecvBuffer)); //初始化,每个字节都用0填充 iResult = recv(ClientSocket, RecvBuffer, MAX_LINE, 0); //接收服务器返回的信息 cout << "接收到服务器信息为:" << RecvBuffer << endl; //输出接收到的信息 } closesocket(ClientSocket); WSACleanup(); return 0; }
  • 相关阅读:
    python排序
    (转载)C++中的sort函数(一)
    谨慎求证,小心思考
    梯度下降算法之方程求解
    单链表基本操作
    为什么会有补码
    tensorflow中的padding方式SAME和VALID的区别
    洛谷P2765 魔术球问题
    洛谷P2754 [CTSC1999]家园
    洛谷P1251 餐巾计划问题
  • 原文地址:https://www.cnblogs.com/cyx-b/p/12554886.html
Copyright © 2011-2022 走看看