网络 基于TCP协议socket编程

一、socket编程

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

        2. 络字节序

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

时间: 2024-12-09 23:47:18

网络 基于TCP协议socket编程的相关文章

(1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型

1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将数据的传递从逻辑上划分为以下七层: 应用层.表示层.会话层.传输层.网络层.数据链路层.物理层. 在发送数据之前要按照上述七层协议从上到下一层一层进行加包处理,再发送出去; 在接收数据之后要按照上述七层协议从下到上一层一层进行拆包处理,再解析出来: 1.2 常用的协议(熟悉) http协议 - 超文

【网络编程笔记】简单的TCP协议 socket编程(C语言版服务器和客户端)

下图是一般socket 编程图. 服务器的建立: 获取的本机名,用来解析得到本机的IP地址的:接着就绑定IP地址成功,然后服务器就处于监听状态,等待客户端的连接.也就是接下来就是TCP/IP的三次握手的操作,该操作成功了服务器和客户端就可以进行通信了.以下是注释代码: 1 void socketConnect() 2 { 3 char Server_name[128]; 4 WSADATA wsaData; 5 struct hostent *hp; 6 struct sockaddr_in a

基于TCP的socket 编程

一.对socket的理解 1.socket本身有"插座"的意思,因此用来描述网络连接的一对一关系. 2.在TCP/IP协议中,"IP地址+TCP/UDP端口号"唯一标识网络通信中的一个进程,"IP地址+端口号"就称为socket. 3.在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socketpair 就唯一标志一个连接. 二.网络数据流 网络数据流有大端和小端之分.发送主机通常将发送缓冲区中的数据按

Java Tcp协议socket编程学习

以下是一对一的通信编程实现,后续会继续学习一个服务器监听多个客户端的实现. 我学习到的主要步骤 第一步:以特定端口(如4800)新建socket对象第二步:以系统输入设备构造BufferedReader对象,该对象用于接收系统键盘输入的字符第三步:以socket对象 得到输出流来构造PrintWriter第四步:以socket对象得到输入流来构造相应的BufferedReader对象,该对象用于接收server端发送过来的信息 我理解到的关闭socket:先开的后关闭,socket最后关闭. 以

模拟客户端登陆(基于TCP的Socket编程)

1.客户端  package com.ljb.app.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.n

基于TCP协议下的socket编程

socket: TCP/IP协议中一个端口号和一个IP地址绑定在一起就生成一个socket就表示了网络中唯一的一个进程,它是全双工的工作方式. 基于TCP的socket编程 函数的使用: 1.socket()         #include <sys/types.h>          /* See NOTES */        #include <sys/socket.h>        int socket(int domain, int type, int protoco

基于TCP协议的简单Socket通信笔记(JAVA)

好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. 1.首先先来看下基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输出输入流 3.按照协议进行读写操作 4.关闭相对应的资源 2.相关联的API: 1.首先先来看下S

浅析C#基于TCP协议的SCOKET通信

TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序. C#基于TCP协议的网络通讯 要进行C#基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分--主机名和端口,

网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服务器进程B1同时为客户进程A1.A2和B2提供服务. Socket概述 ①   所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过“套接字”向网络发出请求或者应答网络请求. ②   Socket是连接运行在网络上的两个程序间的双向通信的端点. ③