• 回声服务器端/客户端(不使用线程)


    服务器:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<winsock.h>
     4 void error_handling(char* message);
     5 #define BUF_SIZE 1024
     6 int main()
     7 {
     8     WSADATA wsaData;
     9     SOCKET hServSock, hClntSock;
    10     SOCKADDR_IN servAddr, clntAddr;
    11     char message[BUF_SIZE];
    12     int strLen,i;
    13     int clntAdrSize;
    14     if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
    15     {
    16         error_handling("WSAStartup() error");
    17     }
    18     hServSock = socket(PF_INET, SOCK_STREAM, 0);
    19     if (hServSock == INVALID_SOCKET)
    20     {
    21         error_handling("socket() error");
    22     }
    23 
    24     memset(&servAddr, 0, sizeof(servAddr));
    25     servAddr.sin_family = AF_INET;
    26     servAddr.sin_addr.s_addr =  inet_addr("127.0.0.1");
    27     servAddr.sin_port = htons(9190);
    28     if (bind(hServSock, (SOCKADDR*)& servAddr, sizeof(servAddr)) == SOCKET_ERROR)
    29     {
    30         error_handling("bind() error");
    31     }
    32     if (listen(hServSock, 5) == SOCKET_ERROR)
    33     {
    34         error_handling("listen() error");
    35     }
    36     clntAdrSize = sizeof(clntAddr);
    37 
    38     for(i = 0;i < 5;i++)
    39     {
    40         hClntSock = accept(hServSock,(SOCKADDR*)&clntAddr,&clntAdrSize);
    41         if(hClntSock == -1)
    42         {
    43             error_handling("accept() error");
    44         }
    45         else
    46         {
    47             printf("Connected client %d 
    ",i+1);
    48         }
    49         while((strLen = recv(hClntSock,message,BUF_SIZE,0))!=0)
    50         {
    51             send(hClntSock,message,strLen,0);
    52         }
    53         closesocket(hClntSock);
    54     }
    55     closesocket(hServSock);
    56     WSACleanup();
    57     return 0;
    58 }
    59 
    60 void error_handling(char* message)
    61 {
    62     fputs(message, stderr);
    63     fputc('
    ', stderr);
    64     exit(1);
    65 }

    客户端:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<winsock.h>
     4 void error_handling(char* message);
     5 #define Buf_Size 1024
     6 int main()
     7 {
     8     WSADATA wsaData;
     9     SOCKET hSocket;
    10     SOCKADDR_IN servAdr;
    11     char message[1024];
    12     int strLen;
    13 
    14     if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
    15     {
    16         error_handling("WSAStartup() error");
    17     }
    18     hSocket = socket(PF_INET, SOCK_STREAM, 0);
    19     if (hSocket == INVALID_SOCKET)
    20     {
    21         error_handling("socket() error");
    22     }
    23 
    24     memset(&servAdr, 0, sizeof(servAdr));
    25     servAdr.sin_family = AF_INET;
    26     servAdr.sin_addr.s_addr = inet_addr("127.0.0.1");
    27     servAdr.sin_port = htons(9190);
    28     
    29     if(connect(hSocket,(SOCKADDR*)&servAdr,sizeof(servAdr)) == SOCKET_ERROR)
    30         error_handling("connect() error");
    31     else
    32         puts("Connected............");
    33     while(1)
    34     {
    35         fputs("Input message(Q to quit): ",stdout);
    36         fgets(message,Buf_Size,stdin);
    37         if(!strcmp(message,"q
    ") || !strcmp(message,"Q
    "))
    38         {
    39             break;
    40         }
    41         send(hSocket,message,strlen(message),0);
    42         strLen = recv(hSocket,message,Buf_Size-1,0);
    43         message[strLen] = 0;
    44         printf("Message from sever: %s",message);
    45     }
    46     closesocket(hSocket);
    47     WSACleanup();
    48     return 0;
    49 }
    50 
    51 void error_handling(char* message)
    52 {
    53     fputs(message, stderr);
    54     fputc('
    ', stderr);
    55     exit(1);
    56 }
  • 相关阅读:
    (转)如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
    Git 常用命令(转)
    (转)iphone常用控件之UIScrollView 不错收藏记录一下
    (转) copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
    设计一个移动应用的本地缓存机制(转)
    让表格对角线上的表格变色
    DevExpress XtraReports 入门一 创建 Hello World 报表
    DevExpress XtraReports 入门三 创建 MasterDetail(主/从) 报表
    DevExpress XtraReports 入门二 创建 dataaware(数据感知) 报表
    自己搜集的一些资料(只是一些链接而已)
  • 原文地址:https://www.cnblogs.com/Jawen/p/11025622.html
Copyright © 2020-2023  润新知