查看: 59821|回复: 86

linux socket编程实例

[复制链接]
  • TA的每日心情
    无聊
    2016-8-19 10:32
  • 签到天数: 80 天

    [LV.6]常住居民II

    发表于 2015-3-30 20:03:46 | 显示全部楼层 |阅读模式
    本帖最后由 xiaoye 于 2015-9-30 18:45 编辑

    最近在看linux编程,这是在网上找的一个代码,直接复制下来代码会有问题,这个已经修改过了

    服务器端
    [C] 纯文本查看 复制代码
    #include"stdio.h"
    #include "stdlib.h"
    #include "string.h"
    #include"errno.h"
    #include"sys/types.h"
    #include"sys/socket.h"
    #include"netinet/in.h"
    #define DEFAULT_PORT 6666
    #define MAXLINE 4096
    
    int main(int argc ,char ** argv){
    
      int socket_fd,connect_fd;
      struct sockaddr_in serveraddr;
      char buff[MAXLINE];
      int n ;
      if ((socket_fd=socket(AF_INET,SOCK_STREAM,0))==-1){
        printf("create socket error:%s(errorno:%d)",strerror(errno),errno);
        exit(0);
    
      }
      memset(&serveraddr,0,sizeof(serveraddr));
      serveraddr.sin_family=AF_INET;
      serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);
      serveraddr.sin_port=htons(DEFAULT_PORT);
      if(bind(socket_fd,(struct sockaddr *)&serveraddr,sizeof(serveraddr))==-1){
        printf("bind socket error:%s(errorno:%d)",strerror(errno),errno);
        exit(0);
      }
      if(listen(socket_fd,10)==-1){
        printf("listen socket error");
        exit(0);
      }
    
      printf("====================wait for client==============");
      while(1){
        if((connect_fd=accept(socket_fd,(struct sockaddr*)NULL,NULL))==-1){
          printf("accept error:%s(errorno:%d)\n",strerror(errno),errno);
          sleep(10);
          continue;
        }
        n=recv(connect_fd,buff,MAXLINE,0);
        if(!fork()){
          if(send(connect_fd,"hello,you are connect!\n",26,0)==-1){
    	perror("send error");
    	close(connect_fd);
    	exit(0);
          }
          buff[n]='\n';
          printf("recv msg from client:%s",buff);
          close(connect_fd);
          exit(0);
        }
        close(socket_fd);
      }
    
    
    
    
    
    }
    


    客户端
    [C] 纯文本查看 复制代码
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<errno.h>
    #include<sys/types.h>
    #include<sys/socket.h>
    #include<netinet/in.h>
    
    #define MAXLINE 4096
    
    int main(int argc, char ** argv){
      int sockfd,n ,rec_len;
      char recvline[4096],sendline[4096];
      char buf[MAXLINE];
      struct sockaddr_in serveraddr;
      if(argc!=2){
        printf("usage:./client <ipaddress> \n");
        exit(0);
      }
      if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){
        printf("create socket error ");
        exit(0);
      }
      memset(&serveraddr, 0,sizeof(serveraddr));
      serveraddr.sin_family=AF_INET;
      serveraddr.sin_port=htons(6666);
      if(inet_pton(AF_INET,argv[1],&serveraddr.sin_addr)<=0){
        printf("inet_ptos error");
        exit(0);
      }
      if(connect(sockfd,(struct sockaddr * )&serveraddr,sizeof(serveraddr))<0){
        printf("connetc error");
        exit(0);
      }
      printf("send msg to server :\n");
      fgets(sendline,4096,stdin);
      if(send(sockfd,sendline,strlen(sendline),0)<=0){
        printf("send msg error");
        exit(0);
      }
      if((rec_len=recv(sockfd,buf,MAXLINE,0))<=0){
          printf("recv error ");
          exit(0);
        }
        buf[rec_len]='\n';
        printf("recv:%s",buf);
        exit(0);
    
    }
    
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2020-1-16 21:33
  • 签到天数: 175 天

    [LV.7]常住居民III

    发表于 2015-3-31 21:23:01 | 显示全部楼层
    问题在于 socktet收发数据,其实不算是有问题,是库的问题。GCC升级了 函数变了

    点评

    我会说是if里面的判断也有问题吗?  发表于 2015-3-31 23:12
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-28 03:10:32 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-28 13:46:32 | 显示全部楼层
    感谢楼主的分享~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-29 07:40:16 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-29 16:03:42 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-30 15:52:33 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-1 17:01:03 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-10-21 10:32
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2015-7-1 23:37:49 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-4 23:28:39 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-24 12:14 , Processed in 0.026802 second(s), 16 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部