摘要:三端口与套接字端口指一台计算机只有单一的连接到网络的物理连接,所以的数据都通过此连接对内对外送达特定的计算机,这就是端口。三程序设计由上面可知基于的信息传递速度更快。接收数据包使用创建数据包套接字,绑定指定端口。
服务器 <-----> 网络 <-------> 客户机
第一部分
一.局域网与因特网
服务器是指提供信息的计算机或程序,客户机是指请求信息的计算机或程序,而网络是用于连接服务器的与客户机,实现相互通信。
局域网(Local Area Network ,LAN)指一群通过一定形式连接起来的计算机。
广域网(Wide Area Network , WAN)指由无数的LAN组成,也就是熟称的因特网(Internet)
二.网络协议
网络协议指计算机之间连接的物理,机械,电气(有效的电平范围)等特性。
1.IP协议(Internet Protocol) Intrenet采用的协议是TCP/IP协议(Transmisssion Control Protocol/Internet Protocol).每一台主机在网络上用为其分配的Internet地址来代表自己,这个地址就是IP地址,目前用4个字节来表示自己,也就是32为的二进制书来表示,称为IPv4,为了方便使用,通常用十进制数表示,如 192.10.0.1 。4个8位二进制最大值也就是 255.255.255.255 。 2.TCP 与 UDP 协议 TCP可以保证从一端数据传送到连接的另一端时,数据能够确实送达,而且抵达的数据的排列顺序和送出的顺序相同,因此TCP协议适合可靠性要求比较高的场合。 HTML,FTP,Telnet等都需要可靠的通信频道。 UDP(User Datagram Protocol ,UDP)无连接通信协议,不保证可靠数据传送。适合对数据准确性要求不高的场合。如网路聊天,在线影片等。
三.端口与套接字
端口指一台计算机只有单一的连接到网络的物理连接,所以的数据都通过此连接对内、对外送达特定的计算机,这就是端口。
那么来看看端口与网络协议有什么关系:
网络协议好比一栋房子,而端口就是房子的那些门,不过这些门有很多,65535个!数据就是从这些门进进出出的。 而这些65536个端口的任务是有所分配,如在TCP协议中的HTTP服务一般使用80端口,FTP服务一般使用21端口。
前面提到的TCP与UDP协议,两种协议不同因此各自的端口号也各自独立,如TCP有220端口,UDP也有220端口,并不冲突。
第二部分
一 InterAddress类
在java.net包中的InetAddresss类是与IP地址相关的类,利用该类可以获取IP地址,主机地址IP地址等信息。
```
import java.net.*; public class Address { // 创建类 public static void main(String[] args) { InetAddress ip; // 创建InetAddress对象 try { // try语句块捕捉可能出现的异常 ip = InetAddress.getLocalHost(); // 实例化对象(应为这里的 //geiLocalHost() 方法返回的值是InteAddress 对象) String localname = ip.getHostName(); // 获取本机名 String localip = ip.getHostAddress(); // 获取本IP地址 System.out.println("HostName:" + localname);// 将本机名输出 System.out.println("HostAddress:" + localip); // 将本机IP输出 } catch (UnknownHostException e) { e.printStackTrace(); // 输出异常信息 } } }
二.ServerSocket类:
服务器与客户机之间的连接就需要有一个媒介,而ServerSocket类提供了这个媒介,用于表示服务器套接字,主要功能是等待来自网络上的“请求”。
ServerSocke类的accept()方法会会返回一个和客户端Socket对象相连接的Socket对象,当服务器向输出流写入信息时,客户端通过相应的输入流就能读取,反之亦然。getInputStream()方法获得输入流,getOutputStream()方法获得输出流。
三.UDP程序设计:
由上面可知基于UDP的信息传递速度更快。基于UDP通信的基本模式如下:
1.将数据打包(数据包),让后将数据包发送到目的地。
2.接收别的机器发来的数据包,查看数据包。
步骤如下:
发送数据包:
1.使用DatagramSocket()创建一个数据包套接字。
2.使用DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)创建要发送的数据包。
3.使用DatagramStorket类的send()方法发送数据包。
接收数据包:
1.使用DatagramStoket(int port)创建数据包套接字,绑定指定端口。
2.使用DatagramPacket(byte[]buf,int lrngth)创建字节数组接收数据包。
3.使用DatagramPacket类的receive()方法接收UDP包。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64268.html
摘要:而面向搜索引擎,就是我们要及时的使用百度谷歌遇到问题无法解决,先别急着放弃,可以去网络寻找答案,你的坑大部分别人都已经走过了,大部分都可以找到合适的解决方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●众多的语言,到底哪一门才是适合我的?●我们为什么要学习Java语言呢...
摘要:文本已收录至我的仓库,欢迎回顾上一篇大型网站系统与中间件读书笔记一这周周末读了第四章,现在过来做做笔记,希望能帮助到大家。没错,我们通过肯定是可以完成两个系统之间的通信的问题的。 前言 只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾上一篇: 《大型网站系统与Java中间件》读书笔记(一)...
摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...
摘要:对于的一些基础知识,你可以轻而易举的找到对应相关的与实战,同时其针对性也强。浅显的说了一下,可能你对于基础是对于应用,其实基本的思路也是差不多的,没有什么是捷径,唯一有的就是不停的学习与摸索。 本文首发于本博客 猫叔的博客,转载请申明出处 感谢粉丝的提问:Java基础差,需要怎么补? 我整体的总结了一下,大致分为以下的几个点说一下: 1、善于使用搜索引擎 现在的网上资源基本是不缺的,缺...
摘要:开头正式开启我入职的里程,现在已是工作了一个星期了,这个星期算是我入职的过渡期,算是知道了学校生活和工作的差距了,总之,尽快习惯这种生活吧。当时是看的廖雪峰的博客自己也用做爬虫写过几篇博客,不过有些是在前人的基础上写的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 开头 2017.08.21 正式开启我...
阅读 2381·2019-08-30 15:56
阅读 1040·2019-08-30 15:55
阅读 3205·2019-08-30 15:44
阅读 935·2019-08-30 10:53
阅读 1889·2019-08-29 16:33
阅读 2473·2019-08-29 16:13
阅读 720·2019-08-29 12:41
阅读 875·2019-08-26 13:56