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);
 }
版权声明:本文为博主原创文章,未经博主允许不得转载。

TCP/IP协议面试常问知识点,倾心总结

关于TCP/IP协议的倾心总结~
  • qq_25827845
  • qq_25827845
  • 2017年03月27日 19:26
  • 2495

TCP/IP 面试题整理

http://blog.csdn.net/chaos_epimetheus/article/details/7269016 TCP/IP协议的工作流程如下: ●在源主机上,应用层将一串应用数据流...
  • changyourmind
  • changyourmind
  • 2017年03月09日 14:00
  • 1578

面试笔试--TCP/IP知识点

下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置: 7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、W...
  • hyqwmxsh
  • hyqwmxsh
  • 2016年09月05日 10:02
  • 6549

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

_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODELAY等        最近...
  • yangyangye
  • yangyangye
  • 2014年03月24日 22:18
  • 855

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

http://www.rosoo.net/a/201202/15716.html 最近在新的平台上测试程序,以前一些没有注意到的问题都成为了性能瓶颈,通过设置一些TCP/IP选项能够解决一部分问...
  • bytxl
  • bytxl
  • 2013年05月08日 10:42
  • 734

linux下TCP/IP网络编程

1.服务器端代码: #include #include #include #include int main(int argc, char *argv[]) { in...
  • Weirenren_027
  • Weirenren_027
  • 2012年12月08日 20:50
  • 2425

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

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

DAY21--java中的网络编程TCP/IP常用知识点总结

中的网络编程TCP/IP常用知识点总结
  • qq253113827
  • qq253113827
  • 2014年05月03日 20:25
  • 736

Linux下网络编程(2)——TCP多连接,1个server,多个client

1. 前言 本次使用TCP连接,1个server,多个client。 server和多个client之间,可以互相发送消息。 2. 代码 tcp_sever_fork....
  • shine_journey
  • shine_journey
  • 2017年05月23日 15:55
  • 812

Linux下网络编程(1)——最简单TCP server/client例子

1. 前言 这是最简单的网络编程例子,一个服务端,一个客户端。 环境:CentOS 6.7  64位,GCC 4.8.5 2. 代码 2.1 服务端代码——tcpserver.cpp #i...
  • shine_journey
  • shine_journey
  • 2017年05月22日 01:33
  • 211
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下TCP/IP网络编程——结课考试知识总结
举报原因:
原因补充:

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