1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>
  4. #include <string.h>
  5. #include <sys/types.h>
  6. #include <netinet/in.h>
  7. #include <sys/socket.h>
  8. #include <sys/wait.h>
  9.  
  10. #define SERVPORT 3333 //服务端口
  11. #define BACKLOG 10 //最大连接数
  12.  
  13. int main(void)
  14. {
  15. int sockfd; //监听的socket
  16. if((sockfd=socket(AF_INET,SOCK_STREAM,))==-)
  17. {
  18. printf("socket 创建失败!");
  19. exit();
  20. }
  21. printf("创建监听socket成功!\n");
  22.  
  23. struct sockaddr_in myAddr; //本机地址信息的结构体
  24.  
  25. /*配置本机socket连接有关信息*/
  26. myAddr.sin_family=AF_INET;
  27. myAddr.sin_port=htons(SERVPORT);
  28. myAddr.sin_addr.s_addr=INADDR_ANY; //任意地址
  29. bzero(&(myAddr.sin_zero),); //填充0,保持大小一致
  30.  
  31. if(bind(sockfd,(struct sockaddr*)&myAddr,sizeof(struct sockaddr))==-) //将创建的socket和有关本机socket配置绑定
  32. {
  33. printf("bind 出错!");
  34. exit();
  35. }
  36. printf("socekt绑定成功!\n");
  37.  
  38. /*下面listen,使socket处于被动监听模式,并为该socket建立一输入数据队列,将到达的服务请求保存在此队列,直到程序处理它们*/
  39. printf("服务端开始listen......\n");
  40. int lisVal=listen(sockfd,BACKLOG);
  41. printf("zhi %d",lisVal);
  42. if(lisVal==-)
  43. {
  44. printf("listern 出错!");
  45. exit();
  46. }
  47. printf("------listen is ok----");
  48. while()
  49. {
  50. struct sockaddr_in remoteAddr; //客户端地址信息
  51. int clientFd; //数据传输socket
  52. int sin_size=sizeof(struct sockaddr_in);
  53. printf("----------");
  54. if((clientFd=accept(sockfd,(struct sockaddr*)&remoteAddr,&sin_size))==-) //服务器接受客户的连接请求
  55. {
  56. printf("accept erro!");
  57. continue;
  58. }
  59.  
  60. printf("收到一个连接来自:%s\n",inet_ntoa(remoteAddr.sin_addr)); //将网络地址转换成“.”点隔的字符串格式。
  61.  
  62. if(!fork()) //创建一个子进程
  63. {
  64. char* msg="连接上了,来自服务端的消息。\n";
  65. if(send(clientFd,msg,sizeof(msg),)==-) //子进程向这个连接发送一条信息
  66. {
  67. printf("send 出错!");
  68. close(clientFd);
  69. exit();
  70. }
  71. }
  72. close(clientFd);
  73. }
  74. }
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>
  4. #include <string.h>
  5. #include <netdb.h>
  6. #include <sys/types.h>
  7. #include <netinet/in.h>
  8. #include <sys/socket.h>
  9.  
  10. #define SERPORT 3333 //服务端口
  11. #define MAXDATASIZE 100 //每次最大数据传输量
  12. char* DES="127.0.0.1";//"192.168.1.101"; //目的地地址
  13.  
  14. int main(int argc,char* *argv[])
  15. {
  16.  
  17. /*
  18. if(argc<2)
  19. {
  20. printf("未输入服务器地址!\n");
  21. exit(1);
  22. }
  23. */
  24. struct hostent * host; //服务端信息结构体
  25. int sockfd; //socket标识
  26.  
  27. if((host=gethostbyname(DES))==NULL) //argv[1]
  28. {
  29. printf("gethostbyname错误!\n");
  30. exit();
  31. }
  32.  
  33. printf("目的地址为:%s\n",host->h_name);
  34.  
  35. if((sockfd=socket(AF_INET,SOCK_STREAM,))==-)
  36. {
  37. printf("创建socket失败!\n");
  38. exit();
  39. }
  40. printf("创建socket成功!\n");
  41.  
  42. /*配置目的地址信息*/
  43. struct sockaddr_in servAddr;
  44. servAddr.sin_family=AF_INET;
  45. servAddr.sin_port=htons(SERPORT);
  46. servAddr.sin_addr=*((struct in_addr *)host->h_addr);
  47. bzero(&(servAddr.sin_zero),);
  48.  
  49. if(connect(sockfd,(struct sockaddr *)&servAddr,sizeof(struct sockaddr))==-) //发起连接
  50. {
  51. printf("连接出错\n");
  52. exit();
  53. }
  54. printf("连接成功!\n");
  55.  
  56. int recvbytes=; //收到的字节数
  57. char buf[MAXDATASIZE]; //缓冲区
  58.  
  59. if((recvbytes=recv(sockfd,buf,MAXDATASIZE,))==-)
  60. {
  61. printf("接收出错!\n");
  62. exit();
  63. }
  64.  
  65. buf[recvbytes]='\0';
  66. printf("recvbytes值:%d \n收到信息:%s\n",recvbytes,buf);
  67. printf("结束\n");
  68. close(sockfd);
  69.  
  70. return ;
  71. }

Linux ---> 简单socket的更多相关文章

  1. Linux 简单socket实现UDP通信

    服务器端 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sy ...

  2. Linux 简单socket实现TCP通信

    服务器端代码 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <stri ...

  3. Linux C Socket编程原理及简单实例

    部分转自:http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx 1.   什么是TCP/IP.UDP? 2.   Socket在哪里 ...

  4. linux中socket的理解

    对linux中socket的理解 一.socket 一般来说socket有一个别名也叫做套接字. socket起源于Unix,都可以用“打开open –> 读写write/read –> ...

  5. Linux内核socket优化项

    Linux内核socket优化项 vi /etc/sysctl.confnet.core.netdev_max_backlog = 30000  每个网络接口接收数据包的速率比内核处理这些包的速率快时 ...

  6. 提高 Linux 上 socket 性能

      http://www.cnblogs.com/luxf/archive/2010/06/13/1757662.html 基于Linux的Socket网络编程的性能优化   1 引言    随着In ...

  7. LInux下socket编程学习笔记

    1.socket套接字: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模 ...

  8. linux c socket programming

    原文:linux c socket programming http://54min.com/post/http-client-examples-using-c.html 好文章 PPT http:/ ...

  9. Linux学习之十七-配置Linux简单的脚本文件自启动

    配置Linux简单的脚本文件自启动 在Linux中使用shell脚本解决一些问题会比单独执行多条命令要有效率,脚本文件规定命名以.sh结尾,最基本的规则就是其内容是命令,想要脚本文件开机自启动,就需要 ...

随机推荐

  1. Java中Queue类实现

    原先在java编程中,Queue的实现都是用LinkedList Queue queue = new LinkedList(); 但正如jdk中所说的那样: 注意,此实现不是同步的.如果多个线程同时访 ...

  2. android149 360 程序锁输入密码

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  3. 【Unity3D插件】NGUI屏幕自适应(转)

    屏幕自适应 NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路.以下是我在开发过程中找到的一个比较方便的实现方法. 主要组件 1 ...

  4. MAC SVN Phonegap

    1. Windows上用VisualSVN Server Manager创建好Repository. 2. 在MAC上,用Phonegap创建好项目,比如在Project1目录里的App目录. 3. ...

  5. Debian5.04安装oracle11g 笔记

    新安装了Debian5,成功安装了oracle11g.记录过程如下. 1.升级一下系统    #apt-get update    #apt-get upgrade 2.安装需要的一些组件:    # ...

  6. C#_自动化测试 (四) 自动卸载软件

    在平常的测试工作中,经常要安装软件,卸载软件,  即繁琐又累.  安装和卸载完全可以做成自动化. 安装软件我们可以通过自动化框架,自动点击Next,来自动安装.  卸载软件我们可以通过msiexec命 ...

  7. [小技巧]兼容IE6的纯CSS背景半透明文字不透明

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 利用正则表达式作为string.split seprator

    某字符串 var str = "{1,att,7},{2,break,7},{3,crit,7},{4,combo,7},{5,break,7},{6,hit,7}"; 需要分割成 ...

  9. MII、RMII、GMII接口的详细介绍

    转载:http://blog.csdn.net/reille/article/details/6312156 概述: MII (Media Independent Interface(介质无关接口)或 ...

  10. android 几个小技巧

    1.如果打开模拟器,不同程序打开了不同的模拟器.可能是某个某个模拟器的target版本过低,修改一下4.2,应该都可以用了 2.找不到R.id.的错误,不妨删除menu文件夹下的xml文件 3.act ...