网络编程浅析

1.TCP编程原理

原理:Client端向指定客户端发送连接请求,当Server端收到请求时,Client端与Server端建立连接。之后进行信心的传输。

交互原理:

知识补充  IP:相当于自身在网络上的门牌号             端口:接收和发送信息的时候都要选择一个端口进行发送。端口的作用是确定信息是属于哪个应用程序。

交互原理:Client端:利用Socket的类向服务器端发送请求,该Socket的端口号由系统自动选择。

Server端:利用ServerSocket类指定接收请求的端口,当接收到Client发送过来的请求时,会自动创建Socket对象。

最后C/S端利用socket对象互相交互。

使用:

//Client端
Socket socket = new Socket(String serPath,String serPort);//需要服务器端的地址和端口
//Server端
ServerSocket ss = new ServerSocket(int port);//选择接收的端口
Socket socket = ss.accept();//当接收到Client发送过来的请求时会自动创建socket对象

注:所以说当两边请求连接的时候,线程是处于阻塞状态的。之后运行方式查看线程这一章

2.UDP

补充的知识:

InetAddress类:

用来封装了数字式的IP地址和该地址的域名。

你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解。

InetAddress类内部隐藏了地址数字。

该类没有构造方法,只有静态方法

原理:Client端将所需要传输的信息打成一个包,然后发送给指定的服务器

交互原理:Client端:数据利用DataPacket类打包并指定发送到的服务器地址,然后利用DataSocket类发送给服务器(需要自己选择端口,系统不再自动分配)。

Server端:创建DataPacket类放到指定的端口来捕获传送过来的信息,然后利用DataSocket类接收数据。

使用:

//Client
String str = "It is Client";
byte [] b = str.getBytes(); //将string类型转化成byte类型
DatagramPacket dp = new DatagramPacket(byte[] b,int length,InetAddress ia,int port);//指定发送信息的大小,并指定发送的服务器的地址。
DatagramSocket ds = new DatagramSocket(int port);//自行分配端口
ds.send(dp);//利用send()方法将信息发送出去。
//Server
byte [] b = new byte[1024];
DatagramPacket dp = new DatagramPacket(byte[] b,int length);//创建包捕获从Client传过来的数据
DatagramSocket ds = new DatagramSocket(int port);//接收的端口号
ds.receive(dp);//将捕获的数据传入dp中
String data  =new String(dp.getData,0,dp.getLength());

3.TCP和UDP的区别

TCP:优点:先建立与服务器的连接,若连接不到则会一直连接,当连接之后再传送数据,保证数据能够互相传送并不丢失。(连接过程会耗费大量时间)

缺点:传送速度慢。

UDP:优点:将数据打成包传送,不管两端是否建立连接,传送速度快

缺点:在传送的过程中数据可能丢失。

时间: 2024-10-01 07:13:18

网络编程浅析的相关文章

ios开发 网络编程浅析(一)

iphone包含了很多框架和库,从底层的套接字到不同层次的封装,可以方便地给程序添加网络功能. (1)BSD套接字.最底层的套接字,这是Unix网络开发常用的API.如果从其他系统移植程序,而程序用的是BSD套接字,那么网络部分可以继续使用这些API. (2)CFNetwork framework .CFNetwork 也是比较底层的, 是对BSD套接字的一个扩展 .它是一个C语言的库,它是基于BSD套接字,提供了对网络协议的抽象.这些抽象使得用户更容易地操作套接字.处理网络的各种连接..它集成

[Python网络编程]浅析守护进程后台任务的设计与实现

在做基于B/S应用中,经常有需要后台运行任务的需求,最简单比如发送邮件.在一些如防火墙,WAF等项目中,前台只是为了展示内容与各种参数配置,后台守护进程才是重头戏.所以在防火墙配置页面中可能会经常看到调用cgi,但真正做事的一般并不是cgi,比如说执行关机命令,他们的逻辑如下: (ps:上图所说的前台界面包含通常web开发中的后端,不然也没有socket一说) 为什么要这么设计 你可能疑惑为什么要这么设计,我觉得理由如下: 首先有一点说明,像防火墙等基本上都运行在类Linux平台上 1.安全问题

Java网络编程 - 浅析web服务器与浏览器的实现原理

我们基本每天都在通过WEB浏览器,去浏览一些新闻,看看视频之类的. 众所周知,这就是所谓的B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件. 那顺道就来简单的看一下,所谓的Web服务器(例如知名的Tomcat)与浏览器,基本的实现原理是什么样的呢? 首先可以明确的就是,例如我们所做的通过浏览器输入一个地址,访问一个网页的操作. 实际对应的底层操作简单来说就是:客户端(浏览器)面向于WEB服务器的网络通信. 那么

Java网络编程和NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector

Java网络编程与NIO详解4:浅析NIO包中的Buffer.Channel 和 Selector 转自https://www.javadoop.com/post/nio-and-aio 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO https://blog.csdn.net/column/details/21963.html 部分代码会放在我的的Github:https://github.com/h2pl/ J

Java网络编程和NIO详解8:浅析mmap和Direct Buffer

Java网络编程与NIO详解8:浅析mmap和Direct Buffer 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO https://blog.csdn.net/column/details/21963.html 部分代码会放在我的的Github:https://github.com/h2pl/ Java网络编程与NIO详解8:浅析mmap和Direct Buffer 之前看到一篇文章说epoll中在维护epo

浅析JAVA网络编程

1. 网络方面 网络编程实际就是通过编程实现网络的通信,,实现计算机之间的通信. 2.编程方面 有三种网络编程结构:(1)C/S编程结构:客户端和服务器端都需要专门的编程导致客户端比较难维护(2)B/S结构:利用通用的客户端(浏览器)和服务器端,这样的 话,客户端不需要专门的维护,只需要进行服务器端的编程就行.(3)P/P:任意一个客户端都是服务器端:例如BT.电驴等都是基于P/P上的共享工具. 3.通信方面 客户端:请求网络连接-交换数据-关闭网络连接 服务器端:监听端口-获得连接-交换数据-

网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门

1.前言 即时通讯网整理了大量的网络编程类基础文章和资料,包括<TCP/IP协议 卷1>.<[通俗易懂]深入理解TCP协议>系列.<网络编程懒人入门>系列.<不为人知的网络编程>系列.<P2P技术详解>系列.<高性能网络编程>系列.甚至还有图文并貌+实战代码的<NIO框架入门>等,目的是帮助即时通讯类应用的开发者,至少要掌握网络编程最基本的原理,所谓知其然更要知其所以然.尤其现在移动网络大行其道的时代,在网络环境如此复杂的

[转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么? http://www.52im.net/thread-1732-1-1.html 1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖它.我们用微信和别

[转帖]脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手

脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手 http://www.52im.net/thread-1729-1-1.html 1.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道"三次"和"四次",但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方式,来对这个知识点进行"脑残式"讲解(哈哈),期望读者们可以更加简单.直观地理解TCP网络通信交互的本