博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Socket应用
阅读量:6639 次
发布时间:2019-06-25

本文共 2638 字,大约阅读时间需要 8 分钟。

hot3.png

Java Socket应用

两台计算机通过网络进行通信方法

1.唯一的ip地址

2.协议

3.端口号

IP地址

为实现网络中不用计算机之间的通信,每台计算机都必须有一个唯一的一个标识---IP地址

IP地址格式:数字型,如:192.168.0.1(32位的二进制)

IPV4:是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基础的协议。1981年 Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。

TCP/IP协议

TCP/IP是目前世界上应用最为广泛的协议

是以TCP和IP为基础的不同层析上多个协议的集合

也称为;TCP/IP协议族或TCP/IP协议栈

TCP:TransmissionControl Protocol 传输控制协议

IP:Internet Protocol 互联网协议

TCP/IP模型

端口

1.用于区分不同应用程序

2.端口号范围为0-65535,其中0-1023为系统所保留

3.IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础

Java中的网络支持

InetAddress类

InetAddress类

1.InetAddress类用于标示网络上的硬件资源,表示互联网协议(IP)地址 获取本机的InetAddress实例

InetAddress address=InetAddress.getLocalHost();

System.out.println("计算机名:"+address.getHostName());

  • 通过Inetaddress.getLocalHost()方法获取本地主机实例; 也可通过Inetaddress.getByName()方法,经给定的主机名或IP地址来取得主机实例

InerAddress实例获取:

1、通过主机名和ip地址来获取 。   InetAddress.getByName("机器名");   InetAddress.getByAddress(ip地址);2、也可通过getLocalHost()方法来获取实例。

URL

1.URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址

2.URL由两部分组成:协议名称和资源名称,中间用冒号隔开

3.在java.net包中,提供了URL类来表示URL

锚点:是指同一页面中的不同位置链接。例如,一个很长的页面,在页面的最下方有一个“返回页首”的文字,单击链接后,可以跳转到这个页面最顶端,这就是一种最典型的锚点链接。通过点击命名锚点,能够快速重定向网页特定的位置(比如快速到页首、页尾或者网页中某篇文章处),便于浏览者查看网页内容。类似于我们阅读书籍时的目录页码或章回提示。

使用URL读取网页内容

1.通过URL对象的openStream()方法可以得到指定资源的输入流

2.通过输入流可以读取、访问网络上的数据

Socket简介

Socket通信 1.TCP协议是面向对象连接、可靠的、有序的,以字节流的方式发送数据

2.基于TCP协议实现网络通信的类

客户端的Socket类

服务器端的ServerSocket类

Socket通信实现步骤

1.创建ServerSocket和Socket

2.打开连接到Socket的输入/输出流

3.按照协议对Socket进行读/写操作

4.关闭输入输出流、关闭Socket

客户端步骤:

1.创建客户端Socket,指定服务器地址和端口 Socket socket=new Socket("IP地址","端口号"); 2.获取输出流,向服务器发送信息 OutputStream os=socket.getOutputStream();//字节输出流 PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput();//关闭输出流 //关闭相应的资源 pw.close(); os.close(); socket.close();

应用多线程来实现服务器与多客户端之间的通信

基本步骤 1.服务器端创建ServerSocket,循环调用accept()等待客户端连接 2.客户端创建一个socket并请求和服务器端连接 3.服务器端接收客户端请求,创建socket与该客户建立专线连接 4.建立连接的两个socket在一个单独的线程上对话 5.服务器端继续等待新的连接


服务器线程处理类

public class ServerThread extends Thread{  //和本线程相关的socket  Socket socket=null;  public ServerThread(Socket socket){  this.socket=socket;}//线程执行的操作,响应客户端的请求public void run(){//获取输入流,并读取客户端信息//获取输出流,反馈信息给客户端}}

服务器的修改

Socket socket=null;//记录客户端的数量int count=0;//循环监听等待while(true){//调用accept()方法开始监听,等待客户端的连接socket=serverSocket.accept();//创建一个新的线程ServerThread serverThread=new ServerThread(socket);//启动线程serverThread.start();count++;System.out.println(count);//获取当前客户端的IPInetAddress address=socket.getInetAddress();System.out.println("当前客户端的IP:"+address.getHostAddress());}

转载于:https://my.oschina.net/u/3577079/blog/1518371

你可能感兴趣的文章
创业第一个月总结
查看>>
临时表删除
查看>>
Hadoop运维记录系列(一)
查看>>
你理解这些Cisco NAT分类和原理吗
查看>>
门户网站CDN实战优化教学案例分享
查看>>
发现和使用OneNote的计算器功能
查看>>
倾听是谈话中最基本的技巧
查看>>
使用Cocos2d-x 和粒子编辑器实现“天天爱消除”场景特效
查看>>
解决在VS2008中“当前不会命中断点,源代码与原始版本不同”的问题
查看>>
#include "stdafx.h" 错误?
查看>>
getResource()和getResourceAsStream的路径问题
查看>>
在VC中定制Doxygen注释宏
查看>>
debian下安装wps office
查看>>
java 获取网络servelt 返回下载文件大小
查看>>
jsp中动态include与静态include的区别
查看>>
【原】unity3D 调用android .so
查看>>
LibreOffice 3.6.6 修复了 50 个 Bug
查看>>
PHREL 1.0.1 发布,主机流量限制工具
查看>>
动画骨骼【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)...
查看>>
【ASP.NET 基础】用户控件开发
查看>>