网络应用(二)----安卓如何使用TCP和UDP进行通信,Socket编程

TCP传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通信协议。

UDP用户数据报协议,是TCP/IP模型中一种面向无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

Socket通称套接字,中文意思为插座。一台服务器可能会提供很多服务,每种服务对应一个Socket(也可说成,每个Socket就是一个插座,客户若是需要哪种服务,就将插头插到相应的插座上面)。而客户的插头也是一个Socket。它是应用层与TCP/IP协议通信的中间软件抽象层,是一组接口。

Socket基本操作包括:

连接远程服务器,发送数据,接收数据,关闭连接,绑定端口,监听到达数据,在绑定的端口接受来自远程机器的连接。

---------------------------------------------------------------------------

服务器要和客户端通信,两者都要实例化一个Socket。但是服务器和客户端的Socket是不一样的,客户端可以实现连接远程服务器,发送数据,接收数据,关闭连接等。服务器还需要实现绑定端口,监听到达数据,在绑定的端口接受来自远程机器的连接。

Android在java.net里面提供了两个类:ServerSocket和Socket,前者用于实例化服务器的Socket,后者用于实例化客户端的Socket. 在连接成功后,应用程序两端都会产生一个Socket实例,操作这个实例,完成客户端到服务器所需的会话。

--------------------------------------------

Socket client=new Socket("192.168.1.23",2012);//第一个参数是目标服务器的IP地址,2012是目标服务器的端口号

注意:0~1023为系统保留,用户设定的端口号应该大于1023

-------------------------------------------

Socket类重要方法:

public InputStream getInputStream()  读出该Socket中的数据流

public OutputStream getOutputStream() 向该Socket中写入数据

public synchronized void close() 关闭Socket

---------------------------------------------------------------

ServerSocket socketserver=new ServerSocket(2012);//2012表示服务器要监听的口号

构造完ServerSocket之后,需要调用ServerSocket.accept()方法来等待客户端的请求(因为Socket都是绑定在端口上面的,所以知道是哪个客户端请求的)。 accept()方法就会返回请求这个服务项目的客户端的Socket实例,然后通过返回的这个Socket实例的方法,操作传输过来的信息。当Socket对象操作完毕之后,使用close()方法将其关闭。

ServerSocket类重要方法:

public Socket accept()  等待Socket请求,直接连接被打开,该方法返回一个刚刚打开的连接Socket对象。

public void close()   关闭该服务器Socket

-------------------------------------------

Socket一般有两种类型:TCP套接字和UDP套接字

--------------------------------------------------------------

使用TCP通信

TCP建立连接之后,通信双方都同时可以进行数据的传输;在保证可靠性上,采用超时重传和捎带确认机制;在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传;在拥塞机制上,采用慢启动算法。

TCP服务器端工作的主要步骤如下。

步骤1 调用ServerSocket(int port)创建一个ServerSocket,并绑定到指定端口上。

步骤2 调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。

步骤3 调用Socket类的getOutputStream()和getInputStream()获取输出和输入流,开始网络数据的发送和接收。

步骤4 关闭通信套接字。

TCP客户端工作的主要步骤如下。

步骤1 调用Socket()创建一个流套接字,并连接到服务器端。

步骤2 调用Socket类的getOutputStream()和getInputStream()方法获取输出和输入流,开始网络数据的发送和接收。

步骤3 关闭通信套接字。

------------------------------------------------------------------

使用UDP通信

UDP有不提供数据报分组、组装和不能对数据包排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用,包括网络视频会议系统在内的众多的客户端/服务器模式的网络应用都需要使用UDP协议。UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。UDP传输原理示意图如图2-6所示。

UDP服务器端工作的主要步骤如下。

步骤1 调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上。

步骤2 调用DatagramPacket(byte[]buf,int length),建立一个字节数组以接收UDP包。

步骤3 调用DatagramSocket类的receive(),接受UDP包。

步骤4 关闭数据报套接字。

UDP客户端工作的主要步骤如下。

步骤1 调用DatagramSocket()创建一个数据包套接字。

步骤2 调用DatagramPacket(byte[]buf,int offset,int length,InetAddress address,int port),建立要发送的UDP包。

步骤3 调用DatagramSocket类的send()发送UDP包。

步骤4 关闭数据报套接字。

时间: 2024-11-08 17:47:20

网络应用(二)----安卓如何使用TCP和UDP进行通信,Socket编程的相关文章

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

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

【Python网络编程】利用Python进行TCP、UDP套接字编程

之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接字将该行发送到服务器. 2.服务器从其连接套接字读取一行字符. 3.服务器将该行字符转换成大写. 4.服务器将修改后的字符串(行)通过连接套接字再发回给客户机. 5.客户机从其套接字中读取修改后的行,然后将该行在其标准输出(监视器)上打印出来. [TCP]服务器端代码: import socket

TCP和UDP并实现socket的简单通信

一.TCP和UDP的区别和联系 1.五层协议体系结构和OSI七层的体系结构 2.五层协议体系结构 2.1应用层(超文本传输协议)(文件传输)(远程登录)(网络管理)(域名系统)HTTP/TFTP/TELNET/SNMP/DNS 如何通过应用进程间的交互来完成特定网络应用,是应用进程间的通信和交互规则. 2.2运输层 负责向两台主机之间提供通用的数据传输服务,应用层利用这一层的传输服务,传输应用层的报文. 2.3网络层(Internet协议)(控制信息协议)(地址/反地址解析协议)IP/ICMP/

Java Socket实现基于TCP和UDP多线程通信

一.通过Socket实现TCP编程 1.1 TCP编程 TCP协议是面向连接,可靠的,有序的,以字节流的方式发送数据.基于TCP协议实现网络通信的类有客户端的Socket类和服务器端的ServerSocket类. 1.2 服务器端套路 1.创建ServerSocket对象,绑定监听端口. 2.通过accept()方法监听客户端请求. 3.连接建立后,通过输入流读取客户端发送的请求信息. 4.通过输出流向客户端发送响应信息. 5.关闭响应的资源. 1.3 客户端套路 1.创建Socket对象,指明

实现TCP、UDP相互通信及应用

实验名称  Socket编程综合实验(1) 一.实验目的: 1.理解进程通信的原理及通信过程 2.掌握基于TCP和UDP的工作原理 3.掌握基本的Socket网络编程原理及方法 二.实验内容 1.掌握简单的基于流式套接字的编程技术:如实现简单的聊天功能.实现简单的信息服务功能等等. 2.掌握简单的基于数据报式套接字的编程技术:如实现简单的聊天功能.实现简单的信息服务功能等等. 三.对所实现的功能进行描述,并附上相应的流程图. 1.基于流式套接字:可以通过选择,分别实现聊天.游戏:猜数字和应用:判

TCP和UDP套接字编程 (java实现)

在了解网络编程之前,我们先了解一下什么叫套接字 套接字即指同一台主机内应用层和运输层之间的接口 由于这个套接字是建立在网络上建立网络应用的可编程接口 因此也将套接字称为应用程序和网络之间的应用程序编程接口! 关于TCP和UDP这里就不作太多介绍了,我们知道TCP是面向连接的,UDP是不面向连接的,TCP可靠,UDP不可靠即可! 我们来设计一个应用来示范一下,流程: 客户机从键盘读取一行字符串,并通过套接字发送到服务器. 服务器从连接的套接字获取这行字符串,并对其进行修改(将小写转为大写),最后再

python网络编程(通过tcp或者udp协议通信)

1.基于tcp协议传送文件: 客户端: import socketimport osimport jsonimport structclient = socket.socket()client.connect(('127.0.0.1',8080)) # 文件大小file_size = os.path.getsize(r'F:\老男孩Python7期\day32\视频\02TCP发送大文件.mp4') # 文件名字file_name = 'TCP发送大文件.mp4'# 定义一个字典d = { 'f

基于UDP协议之——socket编程

一. socket API 前面一篇<基于TCP协议之--socket编程>http://2627lounuo.blog.51cto.com/10696599/1775559已经花了大量的篇幅讲述了socket和使用基本的socket API所需要注意的问题,这里就不再赘述了.下面主要谈论的是UDP和TCP在socket编程中的不同之处: 1. 创建sock 和TCP面向连接的可靠的字节流传输服务不同的是,UDP是无连接的不可靠的数据报传输服务:虽然有所不同,但同样在进程间通信的时候需要提供出

基于TCP的客户端、服务器端socket编程

一.实验目的 理解tcp传输客户端服务器端通信流程 二.实验平台 MAC OS 三.实验内容 编写TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址.端口号,并向客户端发送字符串. 四.实验原理 使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,其主要实现过程如下 服务器端代码: 1 #include "iostream" 2 #include "netdb.h" 3 #inclu