zoukankan      html  css  js  c++  java
  • socket通信

    客户端:

    // Final_Client.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <WINSOCK2.H>
    #include <IOSTREAM>

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

    int main(int argc, char* argv[])
    {

    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD( 1, 1 );

    err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
    return -1;
    }

    if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {

    WSACleanup( );
    return -1;
    }


    SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);


    SOCKADDR_IN addrSrv;
    //addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    addrSrv.sin_addr.S_un.S_addr = inet_addr("10.13.29.25");
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_port = htons(6000);
    connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

    char recvBuf[100];
    recv(sockClient, recvBuf, 100, 0);
    printf("%s ", recvBuf);

    send(sockClient, "Attention: A Client has enter... ", strlen("Attention: A Client has enter... ")+1, 0);
    while (true)
    {
    char talk[100];
    printf(" Please enter what you want to say next("quit"to exit):");
    gets(talk);
    if (strcmp(talk,"quit") == 0)
    {
    printf("quit! ");
    break;
    }
    send(sockClient, talk, strlen(talk)+1, 0);
    char recvBuf[100];
    recv(sockClient, recvBuf, 100, 0);
    printf("%s Says: %s ", "Server", recvBuf);
    }

    printf("End linking... ");
    closesocket(sockClient);
    WSACleanup();

    printf(" ");
    system("pause");
    return 0;
    }

    服务器端:

    // Final_Server.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <WINSOCK2.H>
    #include <IOSTREAM>

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

    int main(int argc, char* argv[])
    {

    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD( 1, 1 );

    err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
    return -1;
    }

    if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {
    WSACleanup( );
    return -1;
    }

    SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);


    SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_port = htons(6000);

    bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));


    listen(sockSrv, 10);


    SOCKADDR_IN addrClient;
    int len = sizeof(SOCKADDR);

    while(true){
    SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);

    char sendBuf[100];
    sprintf(sendBuf, "Welcome %s to the server program~ Now, let's start talking... ", inet_ntoa(addrClient.sin_addr));
    send(sockConn, sendBuf, strlen(sendBuf)+1, 0);

    char recvBuf[100];
    recv(sockConn, recvBuf, 100, 0);
    printf("%s ", recvBuf);

    char * sockConnName = "Client";

    while(true)
    {
    char recvBuf[100];
    recv(sockConn, recvBuf, 100, 0);
    printf("%s Says: %s ", sockConnName, recvBuf);

    char talk[100];
    printf("Please enter what you want to say next("quit"to exit):");
    gets(talk);
    if (strcmp(talk,"quit") == 0)
    {
    printf("quit! ");
    break;
    }
    send(sockConn, talk, strlen(talk)+1, 0);
    printf(" ");
    }
    printf(" End talking... ");
    closesocket(sockConn);
    WSACleanup();
    break;
    }
    printf(" ");
    system("pause");
    return 0;
    }

  • 相关阅读:
    Docker服务启动报错:Job for docker.service failed because the control process exited with error code.
    mysql忘记密码如何重置及修改密码
    linux下的/opt目录作用
    linux防火墙查看状态firewall、iptable
    nmap基本使用方法
    HTTP响应码大全
    端口镜像
    查看占用端口
    restful规范 APIview 解析器组件 Postman
    状态码301和302的区别
  • 原文地址:https://www.cnblogs.com/vipwtl/p/4831620.html
Copyright © 2011-2022 走看看