• 【socket编程】一个简单的基于TCP的客户/服务端例子(vs2008)


    ----------------------------------------------------------------------------

    ************************Tcp_client.cpp************************

    ----------------------------------------------------------------------------

    #include <stdio.h>
    #include "WinSock2.h"
    #pragma comment(lib,"ws2_32.lib")

    SOCKET tcp_socket;
    SOCKADDR_IN tcpAddr;
    const int BufLen=1024;
    char SendBuf[BufLen];

    int main(int argc,char* argv[])
    {
     WSADATA wsd;
     long int Addr;
     int Port;
     if(argc!=3){printf("Usage:%s [<IP> <Port>]\n",argv[0]);return 0;}
     Addr=inet_addr(argv[1]);
     Port=atoi(argv[2]);
     WSAStartup(MAKEWORD(2,2),&wsd);
     tcp_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     printf("Running in client mode(TCP)...\n");
     tcpAddr.sin_family=AF_INET;
     tcpAddr.sin_port=htons(Port);
     tcpAddr.sin_addr.s_addr=Addr;
     
     connect(tcp_socket,(LPSOCKADDR)&tcpAddr,sizeof(tcpAddr));

     while (1)
     {
      ZeroMemory(SendBuf,BufLen);
      fgets(SendBuf,BufLen,stdin);/*
      gets_s(SendBuf,BufLen);
      strcpy(SendBuf+strlen(SendBuf),"\n");*/
      send(tcp_socket,SendBuf,BufLen,0);
     }
     closesocket(tcp_socket);
     WSACleanup();   //释放套接字资源;
     return 1;
    }

    ----------------------------------------------------------------------------

    ***********************Tcp_service.cpp***********************

    ----------------------------------------------------------------------------

    #include <stdio.h>
    #include "winsock2.h"
    #pragma comment(lib,"ws2_32.lib")

    SOCKET tcp_service_socket=INVALID_SOCKET;
    SOCKADDR_IN tcpServiceAddr;
    const int BufLen=1024;
    char RecvBuf[BufLen];
    SOCKET tcp_client_socket=INVALID_SOCKET;
    SOCKADDR_IN tcpClientAddr;

    int main()
    {
     WSADATA wsd;
     int Port=8000;
     WSAStartup(MAKEWORD(2,2),&wsd);
     tcp_service_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     tcpServiceAddr.sin_family=AF_INET;
     tcpServiceAddr.sin_port=htons(Port);
     printf("Running in service mode(TCP)...\n");
     bind(tcp_service_socket,(LPSOCKADDR)&tcpServiceAddr,sizeof(tcpServiceAddr));
     listen(tcp_service_socket,1);

     int size=sizeof(tcpClientAddr);
     tcp_client_socket=accept(tcp_service_socket,(sockaddr FAR*)&tcpClientAddr,&size);
     while (1)
     {
     /* if (tcp_client_socket==INVALID_SOCKET)
      {
       Sleep(1000);
       continue;
      }*/
      recv(tcp_client_socket,RecvBuf,BufLen,0);
      printf("Received:%s\n",RecvBuf);
     }
     closesocket(tcp_client_socket);
     closesocket(tcp_service_socket);
     WSACleanup();  //释放套接字资源
     return 1;
    }

    【点评】这是一个非常粗糙的例子,在实际应用中还需要做很多修改。

  • 相关阅读:
    java 集合Map
    java 集合Collection
    Python 列表生成式, 迭代器&生成器,Json&pickle数据序列化
    Python 函数
    Python列表,字典,元组,字符串操作,文件操作,字符编码
    python的输入输出与循环
    通过数据流发送接收图片
    php中变量的详细介绍
    php数组循环的三种方式
    php session访问限制
  • 原文地址:https://www.cnblogs.com/caixu/p/1930914.html
Copyright © 2020-2023  润新知