java网络编程
来源:互联网 发布:淘宝女童鞋品牌大全 编辑:程序博客网 时间:2024/05/01 22:01
获取本机的InetAddress实例的三种方法:
1. InetAddress address = InetAddress.getLocalHost();2. InetAddress address = InetAddress.getByName("lh");//参数为电脑用户名3. InetAddress address = InetAddress.getByName("1.1.1.10"); //参数为自己电脑的IP
基于TCP的Socket编程
服务器端:
1. 创建ServerSocket对象,绑定监听端口
2. 通过accept()方法监听客户端请求
3. 连接建立后,通过输入流读取客户端发送的请求信息
4. 通过输出流向客户端发送响应信息
5. 关闭相关资源
//1、创建一个服务器端Socket,即ServerSocket,指定绑定端口,并监听该端口ServerSocket serverSocket = new ServerSocket(8888);//2、调用accept()方法开始监听,等待客户端的连接Socket socket = serverSocket.accept();//3、获取输入流,并读取客户端信息InputStream is = socket.getInputStream();//字节输入流InputStreamReader isr = new InputStreamReader(is);//为了提高传输效率,将字节流包装为字符流BufferedReader br = new BufferdReader(isr);//为输入流添加缓冲String info = null;while((info = br.readLine()) != null)//循环读取客户端的信息{ //写自己的代码}socket.shutdownInput();//调用java方法关闭输入流//4、获取输出流,响应客户端的请求OutputStream os = socket.getOutputStream();PrintWriter pw = new PrinterWriter(os);//包装为打印流pw.flush();//调用flush()方法将缓冲输出//5、关闭资源pw.close();os.close();br.close();isr.close();is.close();socket.close();serverSockt.close();
客户端:
1. 创建Socket对象,指明需要连接的服务器的地址和端口号
2. 连接建立后,通过输出流向服务器端发送请求信息
3. 通过输入流获取服务器响应的信息
4. 关闭相关资源
下面以从客户端向服务器端发送登录请求登录为例(服务器端必须早与客户端启动)
//1.创建客户端,指定服务器地址和端口Socket socket = new Socket("1.1.1.10", 8888);//参数为实际需要中的IP和端口号//2.获取输出流,向服务器发送信息OutputStream os = socket.getOutputStream();//字节输出流PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流pw.write("用户名:admin; 密码:123");pw.flush();//刷新,输出信息socket.shutdownOutput();//关闭输出流//3.获取输入流,并读取服务器端的响应信息InputStream is = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is);String info = null;while((info = br.readLine()) != null)//循环读取客户端的信息{ System.out.println("我是客户端,服务器端说:"+info); //写自己的代码}
//4.关闭资源
br.close();
is.close();
pw.close();
os.close();
socket.close();
如何实现服务器与多客户端之间的通信?
基本步骤
1.服务器创建ServerSocket,循环调用accept()方法等待客户端的连接
2.客户端创建一个socket并请求和服务器端连接
3.服务器端接受客户端请求,创建socket与该客户建立专线连接
4.建立连接的两个socket在一个单独的线程上对话
5.服务器端继续等待新的连接
Socket socket = null;while(true){ socket = severSocket.accept(); ServerThread severThread = new SeverThread(socket); severThread.start();}ServerThread类public class SeverThread extends Thread( Socket socket = null; public SeverThread(Socket socket) { this.socket = socket; } //线程执行的操作,响应客户端的请求 public void run{ // }
基于UDP的socket编程
UDP协议进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的Socket(主机地址和端口号),然后再将数据报发送出去。
相关操作类
DatagramPacket:表示数据报包
DatagramSocket:进行端到端通信的类
服务器端实现步骤
1.创建DatagramSocket,指定端口号
2.创建DatagramPacket
3.接收客户端发送的数据信息
4.读取数据
/**接收客户端发送的数据*///1.创建服务器端DatagramSocket,指定端口DatagramSocket socket = new DatagramSocket(8800);//2.创建数据报,用于接收客户端发送的数据byte[] data = new byte[1024];//创建字节数据,指定接收的数据包大小DatagramPacket packet = new DatagramPacket(data,data.length);//3.接收客户端发送的数据socket.receive(packet);//此方法在接收到数据报之前会一直阻塞//4.读取数据String info = new String(data, 0, packet.getLength());System.out.println("我是服务器,客户端说:"+info);/**向客户端响应数据*///1.定义客户端的地址、端口号、数据InetAddress address = packet.getAddress();int port = packet.getPort();bate[] data2 = "欢迎你!".getBytes();//2.创建数据报,包含响应的数据信息DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);//3.响应客户端socket.send(packet2);//4.关闭资源socket.close();
客户端实现步骤
1.定义发送信息
2.创建DatagramPacket,包含将要发送的信息
3.创建DatagramSocket
4.发送数据
/**向服务器端发送数据*///1.定义服务器的地址、端口号、数据InetAddress address = InetAddress.getByName("localhost");int port = 8800;byte data = "用户名:admin;密码:123".getBytes();//2.创建数据报,包含发送的数据信息DatagramPacket packet = new DatagramPacket(data,data.length,address,port);//3.创建DatagramSocket对象DatagramSocket socket = new DatagramSocket();//4.向服务器端发送数据报socket.send(packet);/**接收服务器端响应的数据*///1.创建数据报,用于接收服务器端响应的数据byte data2 = new byte[1024];DatagramPacket packet2 = new DatagramPacket(data2,data2.length);//2.接收服务器响应的数据socket.receive(packet2);//3.读取数据String reply = new String(data2, 0, packet2.getlength());System.out.println("我是客户端,服务器说:"+reply);//4.关闭资源socket.close();
网页制作中的锚点
我们在做一个很长的网页时,需要在页面内做一个导航,点击导航里的链接不是新开一个窗口或者跳转到其他网址,而是跳转到当前页的某一个位置。那么所要跳转到的那个位置,我们就叫做锚点,它是一种在页面内部定位的方式。
设置锚点也是很简单的,例如一个文章分了三段,每段有个标题,标题的代码是这样的
<h2>我是标题一</h2>
<h2>我是标题二</h2>
<h2>我是标题三</h2>
如果我想要在页面内设置锚点,做一个索引,点击相应的索引标题就跳转到相应的段落,那么就只要在标题所在的html标签里面设置一个ID,然后链接过去即可,可以像下面这样设置ID:
<h2 id="a">我是标题一</h2>
<h2 id="b">我是标题二</h2>
<h2 id="c">我是标题三</h2>
然后在索引里面这样设置超链接就可以实现和锚点的连接了
<a href="#a">点击我就会跳到第一段</a>
<a href="#b">点击我就会跳到第二段</a>
<a href="#c">点击我就会跳到第三段</a>
0 0
- 【网络编程】JAVA网络编程
- java网络编程:网络基本概念
- Java网络编程-UDP编程
- Java 高层网络编程
- Java网络编程2
- Java网络编程3
- Java网络编程4
- Java网络服务器编程
- java网络编程1
- java网络编程2
- JAVA网络编程
- Java网络服务器编程
- java网络编程
- Java 高层网络编程
- Java 高层网络编程
- Java网络服务器编程
- Java网络编程
- JAVA网络编程
- Python自学笔记
- 【BestCoder Round #93】HDU6019 MG loves gold
- (转)Android TextView setTextSize, 设置背景透明度和字体透明度
- Android侧滑栏无法滑动收起的解决
- 大白话解析模拟退火算法
- java网络编程
- 开心的小明
- Python自学-文件处理
- 午睡
- 等了好久才解决的题,还是看了别人代码的,优先队列
- 【Java】计蒜客 蓝桥杯模拟赛5 九宫格
- javascript的征程二--html中的javascript
- Java 注解
- poj 2342