栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

socket 客户端服务端代码示例

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

socket 客户端服务端代码示例

1.客户端代码示例:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
  int    ret, cfd;
  char   buff[8096]={0};
  struct sockaddr_in cid;

  
  bzero(&cid, sizeof(cid));
  cid.sin_family = AF_INET;
  cid.sin_addr.s_addr = inet_addr("127.0.0.1");
  cid.sin_port = htons(8000);

  
  cfd= socket(AF_INET, SOCK_STREAM, 0);
  if(cfd == -1) {perror("socket error!"); return -1;}

  
  ret = connect(cfd, (struct sockaddr *)&cid, sizeof(cid));
  if(ret == -1) {perror("connect error!"); close(cfd); return -2;}
  printf("connect success ......n");

  
  while(1){
    printf("####send:");
    scanf("%s", buff);
    send(cfd, buff, sizeof(buff), 0);
    recv(cfd, buff, sizeof(buff), 0);
    printf("client recv: %sn", buff);
  }

  
  close(cfd);
  return 0;
}

2.服务端代码多进程示例:

#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
  int   ret,serverId, clientId  ;
  pid_t pid;
  char buff[8096]={0};
  struct sockaddr_in  saddr, caddr;
  socklen_t clen;

  
  bzero(&saddr, sizeof(saddr));
  saddr.sin_family = AF_INET;
  saddr.sin_addr.s_addr = htons(INADDR_ANY);
  saddr.sin_port   =  htons(8000);

  
  serverId= socket(AF_INET, SOCK_STREAM, 0);
  if( serverId == -1) { perror("socket error!"); return -1;}

  
  ret = bind(serverId, (struct sockaddr *)&saddr, sizeof(saddr));
  if(ret == -1) {perror("bind error!"); close(serverId); return -2;}

  
  if(listen(serverId, 10) == -1)
  { perror("listen error!"); close(serverId); return -3;}

  printf("socket / bind / listen success......n");
  while(1)
  {
    
    clen = sizeof(caddr);
    clientId = accept(serverId, (struct sockaddr *)&caddr, (socklen_t *)&clen);
    if(clientId == -1) { perror("accept error !"); close(serverId); return -4;}
    
    
    pid = fork();
    if(pid == 0){
      
      close(serverId);
      printf("------------recv--------------n");
      while(recv(clientId, buff, sizeof(buff), 0)>0){
        printf("server recv: %sn", buff);
        strcat(buff, "#ok");
        send(clientId, buff, sizeof(buff), 0);
      }
      exit(0);
    }
    else if(pid < 0){
      perror("fork error !");
      close(serverId);
      close(clientId);
      return -5;
    }

    
    close(clientId);
  }
}

3.运行结果如下图:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号