简易TCP客户端和服务器端通信

这篇具有很好参考价值的文章主要介绍了简易TCP客户端和服务器端通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

客户端:

#include<iostream>
#include <winsock2.h>  
#include <ws2tcpip.h>  
#include<stdlib.h>
using namespace std;

#define  BUF_SIZE  1024

int main()
{
    cout << "客户端" << endl;
    //设置Winsock版本,
    WSADATA   wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
    {
        cout << "error" << endl;
        exit(1);
    }


    //创建通信套接字
    SOCKET  hSocket; //创建用于通信的套接字
    char message[BUF_SIZE] = "hello world";
   

    //1,创建用于通信的套接字
    hSocket = socket(PF_INET, SOCK_STREAM, 0);
    if (hSocket == INVALID_SOCKET)
    {
        cout << "socket error" << endl;
        exit(1);
    }


    //2,连接服务器IP
    SOCKADDR_IN  servAdr;
    memset(&servAdr, 0, sizeof(servAdr));
    servAdr.sin_port = htons(9999);    //端口,主机转网络字节序,服务器端口
    servAdr.sin_family = AF_INET;      //地址族
     wchar_t  adr[] = L"192.168.19.1";
    InetPton(AF_INET, adr, &servAdr.sin_addr); // 服务器IP地址  
   
    
    //3,建立连接
    if (connect(hSocket, (SOCKADDR*)&servAdr, sizeof(servAdr)) == SOCKET_ERROR)
    {
        cout << "connect error" << endl;
        return 0;
    }


    //4,开始循环发送
    while (1)
    {
        int messagelen = strlen(message);
        send(hSocket, message, messagelen, 0);
        int Len = recv(hSocket, message, BUF_SIZE - 1, 0);
        message[Len] = 0;
        for (int i = 0; i < BUF_SIZE; i++)
        {
            cout << message[i];
        }
        cout << endl;
        Sleep(1000);
    }


    //5,关闭套接字
    closesocket(hSocket);
    WSACleanup();
}
 

服务器端

#include<iostream>
#include<stdlib.h>
#include<winsock2.h>
using namespace std;

int  main()
{
    cout << "服务器端" << endl;
    WSADATA  wsaData;
    SOCKET hServSock;  //监听套接字
    SOCKET hClntSock;  //接收(accept)套接字
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
    {
        cout << "WSAStartup  error" << endl;
    }


    //1,创建监听套接字
    hServSock = socket(PF_INET, SOCK_STREAM, 0);
    if (hServSock == INVALID_SOCKET)
    {
        cout << "申请发送套接字失败" << endl;
    }


    //2 ,绑定本地IP接口
    SOCKADDR_IN  servAdr;
    memset(&servAdr, 0, sizeof(servAdr));
    servAdr.sin_family = AF_INET;      //地址族
    servAdr.sin_port = htons(9999);    //端口,主机转网络字节序
    servAdr.sin_addr.s_addr = htonl(INADDR_ANY);  //绑定本地IP

    if (bind(hServSock, (SOCKADDR*)&servAdr, sizeof(servAdr)) == SOCKET_ERROR)
    {
        cout << "bind error" << endl;
    }


    //3, 设置监听
    if (listen(hServSock, 5) == SOCKET_ERROR)
    {
        cout << "listen error" << endl;
    }


    //4, 阻塞等待客户端连接
    SOCKADDR_IN  clntAdr;
    int clntAdrSize;
    clntAdrSize = sizeof(clntAdr);
    
    for (int i = 0; i < 5; i++)
    {
        hClntSock = accept(hServSock, (SOCKADDR*)&clntAdr, &clntAdrSize);
        if (hClntSock == -1)
        {
            cout << "accept(0 error" << endl;
        }
        else
        {
            cout << "connect client " << i + 1 << endl;
            char message[1024];
            int strlen;
            while ((strlen = recv(hClntSock, message, 1024, 0)) != 0)
            {
                for (int i = 0; i < strlen; i++)
                {
                    cout << message[i];
                }
                cout << endl;
                send(hClntSock, message, strlen, 0);
            }
        }
        Sleep(100);
        closesocket(hClntSock);
    }
    closesocket(hServSock);
    WSACleanup();
}文章来源地址https://www.toymoban.com/news/detail-861816.html

到了这里,关于简易TCP客户端和服务器端通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT实现TCP通信(服务器与客户端搭建)

    创建一个QTcpServer类对象,该类对象就是一个服务器 调用listen函数将该对象设置为被动监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址,可以通过指定端口号,也可以让服务器自动选择 当有客户端发来连接请求时,该服务器会自动发射一个newConnection信号

    2024年02月09日
    浏览(25)
  • Java实现TCP客户端和服务器端相互通信

    解决TCP客户端和服务器端通信读不到数据的问题  解决: 服务器端和客户端读完后加上client.shutdownInput(); 服务器端和客户端写完后加上client.shutdownOutput(); 服务器端代码: 客户端代码: 运行服务器端再运行客户端,在客户端中输入要发送的信息,回车 服务器收到信息,over

    2024年02月08日
    浏览(33)
  • TCP/IP客户端和服务器端建立通信过程

    使用Qt提供的类进行基于 TCP 的套接字通信需要用到两个类: QTcpServer 类用于监听客户端连接以及和客户端建立连接,在使用之前先介绍一下这个类提供的一些常用API函数: 构造函数 给监听的套接字设置监听 listen() 函数 在代码中 通过启动监听按钮 设置监听 参数: address :

    2024年02月07日
    浏览(30)
  • Linux下TCP网络服务器与客户端通信程序入门

    实现客户端连接服务器,通过终端窗口发送信息给服务器端,服务器接收到信息后对信息数据进行回传,客户端读取回传信息并返回。 服务器当前IP地址要知道 建立socket 绑定本地IP地址并设置端口号 知道服务器的IP地址和端口号 然后进行连接

    2024年02月14日
    浏览(24)
  • TCP通信之QTcpServer和QTcpSocket,服务器和客户端通讯

    TCP传输控制协议 是一个可靠的(相对于UDP),面向流,面向连接的运输协议。 Socket 俗称“套接字”。就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地

    2024年02月12日
    浏览(36)
  • Socket网络编程(TCP/IP)实现服务器/客户端通信。

    一.前言 回顾之前进程间通信(无名管道,有名管道,消息队列,共享内存,信号,信号量),都是在同一主机由内核来完成的通信。 那不同主机间该怎么通信呢? 可以使用Socket编程来实现。 Socket编程可以通过网络来实现实现不同主机之间的通讯。 二.Socket编程的网络模型如

    2024年02月08日
    浏览(49)
  • 【网络原理】使用Java基于TCP搭建简单客户端与服务器通信

    TCP服务器与客户端的搭建需要借助以下API ServerSocket 是创建TCP服务端Socket的API。 ServerSocket 构造方法 : 方法签名 方法说明 ServerSocket(int port) 创建一个服务端流套接字Socket,并绑定到指定端口 ServerSocket 方法: 方法签名 方法说明 Socket accept() 开始监听指定端口(创建时绑定的端

    2024年03月12日
    浏览(44)
  • Linux网络编程:socket、客户端服务器端使用socket通信(TCP)

    socket(套接字),用于网络中不同主机间进程的通信。 socket是一个伪文件,包含读缓冲区、写缓冲区。 socket必须成对出现。 socket可以建立主机进程间的通信,但需要协议(IPV4、IPV6等)、port端口、IP地址。          (1)创建流式socket套接字。                 a)此s

    2024年02月11日
    浏览(30)
  • GEC6818网络编程——服务器端与客户端tcp的双向通信

    网络编程之实现服务器和客户端的tcp双向通信,前面是双向通信的详细流程介绍,后面附上完整的代码o(  ̄▽ ̄ )ブ 1.1 服务器端双向通信的详细流程叙述 创建TCP套接字 : 使用 socket 函数创建一个TCP套接字。这里使用了IPv4地址族 AF_INET 和流式套接字 SOCK_STREAM 。 绑定IP和端口

    2024年02月21日
    浏览(20)
  • 网络通信(13)-C#TCP服务器和客户端同时在一个进程实现的实例

    有时项目需求中需要服务器和客户端同时在一个进程实现,一边需要现场接收多个客户端的数据,一边需要将数据汇总后发送给远程服务器。下面通过实例演示此项需求。 C#TCP服务器和客户端同时在一个进程实现的实例如下: 界面设计 UI文件代码

    2024年01月22日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包