网络 基于TCP协议socket编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络 基于TCP协议socket编程相关的知识,希望对你有一定的参考价值。

一、socket编程

        1.socket编程
        socket这个词可以表示很多概念: TCP/IP协议中,“IP地址+TCPUDP端号唯一标识网络通讯中的一个进程,“IP地址+端口号就称为socketTCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成 的socket pair就唯一标识一个连接。 socket本义有插座的意思,因此用来描述网络连接的一对一关系。
        TCP/IP协议最早在BSD UNIX上实现,TCP/IP协议设计的应层编程接称为socket API

        2. 络字节序

        我们已经知道,内存中的多字节数据相对于内存地址有端和端之分,磁盘件中的多字节数据相对于件中的偏移地址也有端端之分。络数据流同样有端端之分,那么如何定义络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到的顺序发出,接收主机把从络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到的顺序保存,因此,络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是地址。
TCP/IP协议规定,络数据流应采端字节序,即低地址字节。例如上节的UDP段格式, 地址0-116位的源端号,如果这个端号是1000(0x3e8),则地址00x03,地址10xe8, 也就是先发0x03,再发0xe8,16位在发送主机的缓冲区中也应该是低地址存0x03,地址 存
0xe8。但是,如果发送主机是端字节序的,16位被解释成0xe803,不是1000。因此,发 送主机把1000填到发送缓冲区之前需要做字节序的转换。同样地,接收主机如果是端字节序的, 接到16位的源端号也要做字节序的转换。如果主机是端字节序的,发送和接收都不需要做转 换。同理,32位的IP地址也要考虑络字节序和主机字节序的问题。为使络程序具有可移植性,使同样的C代码在端和端计算机上编译后都能正常运,可以调 以下库函数做络字节序和主机字节序的转换。

以上是关于网络 基于TCP协议socket编程的主要内容,如果未能解决你的问题,请参考以下文章

C# socket网络编程 基于TCP协议

初识Socket通信:基于TCP和UDP协议学习网络编程

基于TCP协议的Socket编程 / 基于UDP协议的Socket编程

基于 TCP/IP 协议的网络编程

基于TCP协议下的socket编程

Linux入门培训教程 linux网络编程socket介绍