socket网络通信

1、socket通常也称作“套接字”,用于描述IP地址和端口。在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务。

2、网络基础知识

1、IP地址:IP网络中每台主机具有唯一的ip地址,ip地址是一个逻辑地址,因特网上的ip地址是唯一的。IPV4由4个字节组成,经常以点分十进制表示

  2、七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。每层都规定了完成的功能以及相应的协议

物理层:提供二进制传输,确定在通信道路上如何传输比特流

数据链路层:提供介质访问,加强物理层的传输功能,建立一条无差错的传输路线

网络层:提供IP寻址和路由,因为在网络上数据可以有多条道路到达目的地,网络层负责找出最佳的传输线路

传输层:为源主机到目的主机提供可靠的数据传输服务,隔离网络的上下层协议,使得网络层与下层协议无关

会话层:在两个相互通信的应用进程之间建立,组织和协调其相互之间的通信

表示层:处理被传送数据的表示问题

应用层:为用户的网络应用程序提供网络通信的服务

3、协议:

应用层协议:文件传输协议(ftp), 超文本传输协议(http)

  传输层协议:

1、tcp:面向连接的可靠传输协议,利用tcp进行网络通信时,首先要通过三次握手,以确立双方的连接,一旦连接建立好,就可以进行通信了,tcp提供了数据确认和数据重传机制,保证了发送的数据一定会到达通信的对方

2、udp:udp是无连接的,不可靠的传输协议,采用udp进行通信时,不需要建立连接,可以直接向一个ipd地址发送数据,但是对方是否收到就无法确认了。(所以会发生丢包)

4、流式套接字:提供面向连接,可靠的数据传输服务,数据无差错,无重复的发送,且按照发送顺序接收,基于tcp协议实现的

数据报式套接字:提供无连接服务,数据包以独立形式发送,不提供无错保证,数据可能丢失或者重复,是基于udp协议实现的。

5、tcp/ip是什么?

tcp/ip是个协议组,可分为三个层次:网络层,传输层和应用层

在网络层有ip协议

在传输层有tcp协议和udp协议

在应用层有ftp,http

6、socket是什么?

socket是应用层与tcp/ip协议组通信的中间软件抽象层,一组接口,把复杂的tcp/ip协议隐藏在socket接口后面

所以http就是tcp/ip应用层的协议,socket是他们的软件抽象层

7、短连接: 连接->传输数据—>关闭连接

http是无状态的,浏览器和服务器每进行一次http操作,就联立一次连接,但任务结束就中断连接

也可以这样说:短连接是指socket连接后发送后接收完数据后马上断开连接

8、长连接:

连接->传输数据->保持连接->传输数据->.....->关闭连接

长连接是指建立socket连接后不管是否使用度保持连接,但安全性较差

9、tcp与udp编程

基于tcp(面向连接)的socket编程的服务端的流程:

1、创建套接字(socket)

2、将套接字绑定到一个本地地址和端口上(bind)

3、将套接字设置为监听模式,准备接收客户端请求(listen)

4、等待客户端请求到来,当请求到来时,接受连接请求,返回一个新的对应与此次连接的套接字(accept)

5、用返回的套接字和客户端进行通信(send/recv)

6、返回,等待另外的客户请求

7、关闭套接字

基于tcp的socket编程的客户端的程序流程如下:

1、创建套接字(socket)

2、向服务器发起连接请求(connect)

3、和服务器机进行通信(send/recv)

4、关闭套接字

在服务端,当调用accept函数时,程序就好等待,等待客户端调用connect函数发出连接请求,然后服务器接受请求,之后连接建立,服务器和客户端就可以使用send和recv进行通信了

基于udp(面向无连接的)socket编程

服务端也叫接收端,对于基于udp的编程来说,先启动的成为服务端,发送数据的成为客户端

时间: 2024-10-07 19:43:41

socket网络通信的相关文章

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

JavaSE入门学习47:Socket网络通信编程(一)

今天既然我们学习Java的Socket网络通信编程,那么在我们的现实生活中那些是Socket编程的应用呢?可以想象 我们最常用的聊天工具软件QQ就是,当然MSN也是啦. 一网络基础知识 两台计算机通过网络进行通信的必要条件: 1)IP地址 2)网络协议 3)端口号 两台计算机网络通信示意图: (1)TCP/IP协议 1)TCP/IP协议是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也称 TCP/IP协议族或TCP/IP协议栈. 2)TCP:Transmissi

C#Socket 网络通信异步处理 SocketAsyncEventArgs

C#Socket 网络通信异步处理 SocketAsyncEventArgs 异步套接字操作 1.服务端简单实现: public partial class Form_Server : Form { private Socket socket; public Form_Server() { InitializeComponent(); } private void Form_Server_Load(object sender, EventArgs e) { try { //获取本地ip地址 IP

JavaSE入门学习48:Socket网络通信编程(二)

三Socket通信 (1)Socket 套接字Socket是网络通信的基础,简单来说,可以认为是IP地址+端口,用来区分实现不同应用程序的通信. 两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一段称为一个Socket.Socket 通常用来实现client-server连接. java.net包中定义的两个类Socket和ServerSocket,分别用来实现双向连接的client和server. (2)Socket通信模型 Socket通信: Socket通信实现

Java中Socket网络通信

目录 目录 网络协议信息 InetAddress类的应用 URL类的应用 基于TCP的Socket通信 基于UDP的socket通信 Socket通信总结 markdown编辑器快捷键 网络协议信息 TCP 传输控制协议(Transmission Control Protocol) IP 互联网协议(Internet Protocol) HTTP 超文本传输协议(默认端口号为80) FTP 文件传输协议(默认端口号为:21) Telnet (远程登录服务,默认端口号为:23) InetAddre

java实现最基础的socket网络通信

一.网络通信基础 网络中存在很多的通信实体,每一个通信实体都有一个标识符就是IP地址. 而现实中每一个网络实体可以和多个通信程序同时进行网络通信,这就需要使用端口号进行区分. 二.java中的基本网络支持 1.IP地址使用InetAddress类来表示. 获取InetAddress实例的两个方法为: (1)getByName(String host)    根据主机获取对应的InetAddress对象 (2)getByAddress(byte[] addr)根据IP地址获取InetAddress

Java系列讲座二:Socket网络通信实现聊天软件项目讲解(UDP)

上一篇我们讲了通过TCP方式实现网络通信软件开发的原理,思路及实现,今天跟大家谈谈Socket通信中UDP方式通信的软件开发步骤及主要代码讲解,UDP实现方式实现的通信软件特点是不分客户端与服务器端,一个程序既是客户端与是服务器端,典型软件是一些局域网的聊天软件,如飞鸽等软件. UDP方式通信主要用到了java.net包中的3个类分别是DatagramPacket类,DatagramSocket类与InetAddress类,下面通过实现一个简易聊天软件小项目来讲解他们的使用方法,代码如下: pa

JavaSE入门学习49:Socket网络通信编程(三)

四通过Socket实现TCP编程 (4)使用多线程实现多客户端的通信 多线程服务器实现 应用多线程来实现服务器与客户端之间的通信基本步骤:. 1)服务器端创建ServerSocket,循环调用accept()方法等到客户端连接. 2)客户端创建一个socket并请求和服务器端连接. 3)服务器端接受客户端请求,创建socket与该客户建立专线连接. 4)建立连接的两个socket在一个单独的线程上对话. 5)服务器端继续等待新的连接. 实例代码: ServerThread.java源文件代码:

HTTP socket网络通信

1 import socket 2 3 class WebServer(): 4 5 def __init__(self): 6 ''' 7 1.创建总的socket 8 2.监听 9 :param self: 10 :param addr: 11 :return: 12 ''' 13 # 创建socket soncket函数到底是什么 本质是干嘛的? 14 self.skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 15 16 #