首页 > 其他分享 >发信息(客户)

发信息(客户)

时间:2024-06-08 10:13:33浏览次数:8  
标签:__ cout lib mysocket namespace 信息 客户 include

//客户端 
#include"mysocket.h"
//头文件 
using namespace std;
 
int main()
{
    cout << "-----------------客户端----------------\n";
    startup();                //启动 
    //检测版本号
    if (LOBYTE(wsdata.wVersion) != 2 || HIBYTE(wsdata.wHighVersion) != 2) {
        cout << "版本号与服务端不匹配!" << endl;
        WSACleanup();
        return FALSE;
    }
    //填充服务端信息:这里填和服务端一样的就好,不做解释 
    SOCKET client = createSocket(PF_INET, SOCK_STREAM);
    SOCKADDR_IN server_addr;
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.S_un.S_addr = inet_addr("192.168.1.25");
    server_addr.sin_port = htons(1000);
    //发送连接请求 请求连接服务器
    if (connect(client, (SOCKADDR*)&server_addr, sizeof(SOCKADDR)) == SOCKET_ERROR) {
        cout << "连接错误!" << endl;
        WSACleanup();
        return -1;
    }
    cout << "成功连接到服务器" << endl;
    char send_buf[1145], recv_buf[4514];
    while(1){
        cout << "输入要发送的信息:";
        cin >> send_buf;
        mysend(client, send_buf);
        cout << "等待服务端响应...\n";
        myrecv(client, recv_buf);
        cout << "收到来自服务端的信息:" << recv_buf << endl;
    }
    return 0;
}
//mysocket.h
#ifndef __MYSOCKET_H__
#define __MYSOCKET_H__
//头文件保护 
#include<bits/stdc++.h>
#include<winsock.h>
#pragma comment(lib,"ws2_32.lib")
 
using namespace std;
 
WSADATA wsdata;
 
void startup(){
    //异步启动 
    if (WSAStartup(MAKEWORD(2, 2), &wsdata))
    /*                   ^                ^ 
                版本号,这里用的是2.2   |
                            数据存放处,这里设成全局变量 
    */ 
    {
        //返回0则成功,否则失败,报错 
        cout << "启动失败!\n";
        WSACleanup();
        exit(0);
    }
}
 
SOCKET createSocket(int af, int type){
    /*原函数原型: 
      SOCKET socket(int af, int type, int protocol)
                          ^       ^           ^
                        协议  类型(后文) 形式(一般用0) 
    */
    SOCKET ret = socket(af, type, 0);
    if (ret == INVALID_SOCKET)  //错误返回INVALID_SOCKET 
    {
        //报错 
        cout << "创建套接字失败!\n";
        WSACleanup();
        exit(0);
    }
    return ret;
}
 
void mysend(SOCKET s, const char* buf){
    /*
        带报错的send()函数,原函数原型为 :
        int send(SOCKET s, const char* buf, int len, int flag) 
        这里为了简化,省略后两个参数。 
        函数把buf发送给s,返回发送长度 
    */ 
    int len = send(s, buf, sizeof(buf), 0);
    if(len < 0)        //发送错误 
    {
        cout << "信息发送失败!\n";
        WSACleanup();
        exit(0);
    }
}
 
void myrecv(SOCKET s, char* buf){
    /*
        带报错的recv()函数,其原型为: 
        int recv(SOCKET s, char* buf, int len, int flag)
        同样省略后两个参数 
        函数将从s收到的信息储存在buf中,返回接收长度 
    */
    int len = recv(s, buf, sizeof(buf), 0);
    if(len < 0)
    {
        cout << "信息接收失败!\n";
        WSACleanup();
        exit(0);
    }
}
 
#endif
//别忘了 

 

标签:__,cout,lib,mysocket,namespace,信息,客户,include
From: https://www.cnblogs.com/liujiaxing-/p/18238343

相关文章

  • 客户端
    //客户端#include"mysocket.h"//头文件usingnamespacestd;intmain(){cout<<"--------------------客户端-------------------\n";startup();//启动//检测版本号if(LOBYTE(wsdata.wVersion)!=2||HIBYTE(wsdata.wHi......
  • 客户端,服务端
    //客户端#include"mysocket.h"//头文件usingnamespacestd;intmain(){ cout<<"-----------------客户端----------------\n"; startup(); //启动 //检测版本号 if(LOBYTE(wsdata.wVersion)!=2||HIBYTE(wsdata.wHighVersion)!=2){ c......
  • 【Python-因特网客户端编程-12】Python 提供了对 POP 和 IMAP 协议的支持
    Python提供了对POP和IMAP协议的支持一、使用Python代码与POP3和IMAP4邮件服务器进行通信使用`poplib`进行POP3操作示例:使用`poplib`获取邮件使用`imaplib`进行IMAP操作示例:使用`imaplib`获取邮件比较`poplib`和`imaplib`总结二、smtplib......
  • 利用线程池给客户端传文件
    主函数#include<func.h>#include"threadPool.h"#include"server.h"#defineEVENTSNUM100intpipefd[2];voidsigHandle(intsigno){printf("%dsignal\n",signo);intexitNum=1;write(pipefd[1],&exitN......
  • 信息奥赛练习——3360相邻数之和
    【题目描述】请你编程求出二维数组中某点的相邻数之和。相邻数是指与该点邻接的 88 个元素,若该点在边角位置,则邻接元素相应减少。下图以 44 行 55 列二维数组 a为例:a[2][3]元素的值为 77,其邻接元素为 8,9,10,5,8,6,8,08,9,10,5,8,6,8,0 和为 5454 。再比如:a[1]......
  • 抖音小红书淘宝拼多多商家订单对接ERP|获取电商平台订单信息(商家授权)
     custom-自定义API操作 支持抖音拼多多淘宝小红书公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认yes,将......
  • 粽叶飘香,浓情端午|广州流辰信息祝大家端午安康!
     一片粽叶、一缕粽香,一杯雄黄酒、一条龙船……,转眼间,一个包裹着怀念,满屋飘香的节日如期而。这份承载着中华民族拳拳的爱国热情的端午佳节正代代相传,带着所有人的美好祝福遍洒华夏大地,经过两千多年的洗礼,这份美好的祝福浓情未减。五月五,人间美景是端阳,在这个满屋粽叶飘香的端午......
  • python获取多只股票价格信息的方法
    python代码如下:importefinanceasefimporttimefromdatetimeimportdatetimeimportcsvfreq=1defprocess_row(row):#在这里处理每一行数据print('股票:'+row[0],'日期:'+row[2],'现价:'+row[3],'最高:'+row[5],'最低:�......
  • 怎么能通过chatgpt-on-wechat获取全部的微信聊天信息
    要通过chatgpt-on-wechat工具获取全部的微信聊天信息,你可以按照以下步骤操作:安装并配置itchat库:itchat是一个开源的微信个人号接口,可以帮助你获取微信群聊信息。pipinstallitchat登录微信:使用itchat登录微信,获取群聊列表并监听群消息。importitchat#......
  • 论文敲公式敲到“崩溃”?合合信息扫描全能王“公式识别”一键解决公式提取难题
    毕业季临近,全国高校毕业生陆续进入了忙碌的“答辩季”。进入“百米冲刺”阶段,论文至关重要。对于理科工学生而言,论文中的数理化公式,稍不注意就容易输错,手动输入误差难以避免。近日,合合信息旗下扫描全能王全新上线“公式识别”功能,通过“试卷扫描”模式,即可使用相关功能。基于......