Linux下TCP/IP网络编程——结课考试知识总结

原创 2016年06月01日 15:21:54
  • socket也被认为是文件的一种,因此在网络数据传输过程中自然也可以使用文件I/O的相关函数。

  • 协议就是为了完成数据交换而做的约定。
    PF_INET—-IPv4互联网协议

  • 下列数据适合用那类套接字传输
    • a.演唱会现场直播的多媒体数据(SCOK_DGRAM)
    • b.某人压缩过的文本文件(SCOK_STREAM)
    • c.网上银行用户与银行之间的数据传递(SCOK_STREAM)
  • 端口号就是在同一操作系统内为区分不同的套接字而设置的,由16位构成,可分配的端口号是0~65535,但1~1023时知名端口,一般分配给特定的应用程序。

  • TCP套接字和UDP套接字不会共用端口号,允许重复,但相同的套接字不允许端口重复。

  • 数据传输目标地址同时包含IP地址和端口号。

  • 客户端调用connect函数后,发生以下情况之一才会返回(完成函数的调用)
    • 服务器端接受连接请求
    • 发生断网等异常情况而中断连接请求
  • TCP
    服务器端和客户端函数调用关系

    迭代服务器端的函数调用顺序


  • ceho_client.c
 #include<stdio.h>
 #include<stdlib.h>
 #include<string.h>
 #include<unistd.h>
 #include<arpa/inet.h>
 #define BUF_SIZE 1024
 void error_handling(char *message);
 int main(int argc,char *argv[])
 {
     int sock;
     char message[BUF_SIZE];
     int str_len;
     struct sockaddr_in serv_adr;
     if(argc!=3)
     {
         printf("Usage: %s <IP><PORT>\n",argv[0]);
         exit(1);
     }
     sock = socket(PF_INET,SOCK_STREAM,0);
         if(sock==-1)
             error_handling("socket() error");
     memset(&serv_adr,0,sizeof(serv_adr));
     serv_adr.sin_family = AF_INET;
     serv_adr.sin_addr.s_addr = inet_addr(argv[1]);
     serv_adr.sin_port = htons(argv[2]);

     if(connect(sock),(struct sockaddr*)&serv_adr,sizeof(serv_adr)) == -1)
         error_handling("connect() error!");
     else
         puts("Connected......");
 while(1)
 {
     fputs("Input message(Q to quit):",stdout);
     fgets(message,BUF_SIZE,stdin);

     if(!strcmp(message,"q\n") || !strcmp(message,"Q\n"))
         berak;

     write(sock,message,strlen(message));
     str_len = read(sock,message,BUF_SIZE-1);
     message{str_len} = 0;
     printf("Message from server: %s",message);
 }
     close(sock);
     return 0;
 }

 void error_handling(char *message)
 {
     fputs(message,stderr);
     fputc('\n',stderr);
     exit(1);
 }
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

linux下TCP/IP网络编程

1.服务器端代码: #include #include #include #include int main(int argc, char *argv[]) { in...

Linux下高性能网络编程中的几个TCP/IP选项

_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODELAY等        最近...

Linux下的socket编程实践(一) 网络基本知识以及 TCP/IP简述

ISO/OSI七层参考模型 1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传...

Linux 系统应用编程——网络编程(利用TCP/IP 模型分析数据传输过程)

(转载自:http://blog.sina.com.cn/s/blog_5ec353710101i892.html)    TCP/IP参考模型是一个非常基础,而且也非常重要的基础框架,要想入...

Linux网络编程——TCP/IP网络协议入门

我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。北京的某一块网卡送出信号,深圳的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置...

网络编程小知识——linux下errno的意义

errno 是记录系统的最后一次错误代码。代码是一个int型的值,在errno.h中定义 只有当一个库函数失败时,errno才会被设置。当函数成功运行时,errno的值不会被修改。这意味着我们不能...

Linux下高性能网络编程中的几个TCP/IP选项_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODE

最近在新的平台上测试程序,以前一些没有注意到的问题都成为了性能瓶颈,通过设置一些TCP/IP选项能够解决一部分问题,当然根本的解决方法是重构代码,重新设计服务器框架。先列出几个TCP/IP选项: 选...

初识Java TCP/IP Socket-UDP网络编程知识

Java 通过 DatagramPacket 类和 DatagramSocket 类来使用 UDP 套接字,客户端和服务器端都通过DatagramSocket 的 send()方法和 receive(...

网络编程知识(12)--ISO/OSI七层模型和TCP/IP四层网络模型

本文转载自:http://www.cnblogs.com/xumenger/p/4504825.html 尊重原创1.ISO/OSI七层模型下四层是为数据传输服务的,物理层是真正的传输数据的,数据链路...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)