zoukankan      html  css  js  c++  java
  • 简单实现服务器/客户端的c代码

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<string.h>
     4 #include<sys/types.h>
     5 #include<sys/socket.h>
     6 #include<netinet/in.h>
     7 #include <unistd.h>
     8 
     9 int main() {
    10     /* socket */
    11     int soc_ser_l=socket(PF_INET,SOCK_STREAM,0);
    12     
    13     /* creat server sockaddr_in */
    14     struct sockaddr_in ser_addr;
    15     ser_addr.sin_family=AF_INET;
    16     ser_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    17     ser_addr.sin_port=htons(8888);
    18     memset(ser_addr.sin_zero,0,8);
    19     
    20     /* bind connect socket and ip/port */
    21     if(bind(soc_ser_l,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
    22     {
    23         printf("bind error");
    24         return 0;
    25     }
    26     
    27     /* listen */
    28     if(listen(soc_ser_l,20)==-1)
    29     {
    30         printf("listen error");
    31         return 0;
    32     }
    33     /* creat items */
    34     int soc_ser_t;
    35     struct sockaddr_in cli_addr;
    36     while (1){
    37         /* accept */
    38         int len=sizeof(ser_addr);
    39         soc_ser_t=accept(soc_ser_l,(struct sockaddr *)&cli_addr,&len);
    40         if(soc_ser_t==-1){
    41             perror("accept error");
    42             exit(1);
    43         }
    44 
    45         /* recv data */
    46         char recv_buf[255];
    47         int ret=recv(soc_ser_t,recv_buf,255,0);
    48         if(ret>0){
    49             recv_buf[ret]='';
    50             printf("server recv:");
    51             printf("%s
    ",recv_buf);
    52         }
    53         
    54         /* send data  */
    55         char send_msg_str[100];
    56         printf("server send:");
    57         fgets(send_msg_str,100,stdin);
    58         *(strchr(send_msg_str,'
    '))='';
    59         send(soc_ser_t,send_msg_str,strlen(send_msg_str),0);
    60         close(soc_ser_t);
    61     }
    62         
    63     close(soc_ser_l);
    64     return 0;
    65 }
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<sys/types.h>
     4 #include<sys/socket.h>
     5 #include<netinet/in.h>
     6 #include <arpa/inet.h>
     7 #include <unistd.h>
     8 
     9 int main(){
    10     /* creat client socket */
    11     int soc_cli=socket(PF_INET,SOCK_STREAM,0);
    12     /* creat server sockaddr_in */
    13     struct sockaddr_in ser_addr;
    14     ser_addr.sin_family=PF_INET;
    15     ser_addr.sin_addr.s_addr=inet_addr("192.168.195.129");
    16     ser_addr.sin_port=htons(8888);//8888 port number has no ""
    17     memset(ser_addr.sin_zero,0,8);
    18 
    19 
    20     /* connect */
    21     if(connect(soc_cli,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1){
    22         printf("connect error");
    23         return 0;
    24         }
    25 
    26         
    27     /* send */
    28     char cli_send_str[100];
    29     printf("client send:");
    30     fgets(cli_send_str,100,stdin);
    31     *(strchr(cli_send_str,'
    '))='';
    32 
    33     send(soc_cli,cli_send_str,strlen(cli_send_str),0);
    34 
    35     /* recv */
    36     char cli_recv[255];
    37     int ret=recv(soc_cli,cli_recv,255,0);
    38     if(ret>0){
    39         cli_recv[ret]='';
    40         printf("client recv:");
    41         printf("%s
    ",cli_recv);
    42         }
    43      
    44     close(soc_cli);
    45     return 0;
    46     }
  • 相关阅读:
    《AI for Game Developers》第七章 A*路径寻找算法 (二)(skiplow翻译)
    芯片科普学习笔记
    sprboot 配置logback 日志输出
    springboot+mybatis 配置双数据源(mysql,oracle,sqlserver,db2)
    vue 封装axios请求
    *arg参数
    pytest mac安装了pytest,但是输入pytest却提示命令不存在
    构建Java Web开发环境
    在CentOS上编译安装PostgreSQL
    在Ubuntu 14.04上使用Eclipse开发和调试PosgreSQL9.3.4
  • 原文地址:https://www.cnblogs.com/sslblog/p/5696041.html
Copyright © 2011-2022 走看看