JavaSE入门学习48:Socket网络通信编程(二)
来源:互联网 发布:应该数控铣床编程书籍 编辑:程序博客网 时间:2024/04/28 06:48
三Socket通信
(1)Socket
套接字Socket是网络通信的基础,简单来说,可以认为是IP地址+端口,用来区分实现不同应用程序的通信。
两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一段称为一个Socket。Socket
通常用来实现client-server连接。
java.net包中定义的两个类Socket和ServerSocket,分别用来实现双向连接的client和server。
(2)Socket通信模型
Socket通信:
Socket通信实现步骤:
1)创建ServerSocket和Socket。
2)打开连接到Socket的输入/输出流。
3)按照协议对Socket进行读/写操作。
4)关闭输入输出流,关闭Socket。
(3)ServerSocket类
ServerSocket类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可
能向请求者返回结果。
ServerSocket类的构造方法:
(4)Socket类
Socket类实现客户端套接字(也可以就叫"套接字")。套接字是两台机器间通信的端。
Socket类的构造方法:
Socket类的方法:
四通过Socket实现TCP编程
(1)TCP
TCP协议是面向连接,可靠的,有序的,以字节流的方式发送数据。
基于TCP协议实现网络通信的类:
1)客户端的Socket类2)服务器端的SoServercket类
(2)基于TCP的Socket通信具体步骤:
服务器端:
1)创建ServerSocket对象,绑定监听端口。
2)通过accept()方法监听客户端请求。
3)连接建立后,通过输入流读取客户端发送的请求信息。
4)通过输出流向客户端发送响应消息。
5)关闭相关资源。
客户端:
1)创建Socket对象,指明需要连接的服务器的地址和端口号。
2)连接建立后,通过输出流向服务器端发送请求信息。
3)通过输入流获取服务器响应的消息。
(3)实例
一对一(一个服务器和一个客户端)TCP编程实例代码:
Server.java源文件代码:
<span style="font-size:18px;">import java.net.*;import java.io.*;/**基于TCP协议的Socket通信,实现用户登录*服务器端*/public class Server{public static void main(String[] args){try{//1创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听端口 ServerSocket serverSocket = new ServerSocket(8111);//2调用accept()方法开始监听,等待客户端的连接System.out.println("***服务器即将启动,等待客户端的连接***");Socket socket = serverSocket.accept();//3获取输入流,并读取客户端信息//字节输入流InputStream is = socket.getInputStream();//将字节输入流转换为字符输入流InputStreamReader isr = new InputStreamReader(is,"utf-8");//为字符输入流添加缓冲BufferedReader br = new BufferedReader(isr);//读取数据String info = null;//循环读取客户端的信息 while((info=br.readLine())!=null){System.out.println("我是服务器,客户端说:"+info);}//关闭输入流socket.shutdownInput();//4获取输出流,响应客户端的请求OutputStream os=socket.getOutputStream();//包装为打印流PrintWriter pw=new PrintWriter(os);pw.write("欢迎您!");//刷新缓存pw.flush();//5关闭资源pw.close();os.close();br.close();isr.close();is.close();socket.close();serverSocket.close();}catch(IOException e){e.printStackTrace();}}}</span>
Client.java源文件代码:
<span style="font-size:18px;">import java.net.*;import java.io.*;/**基于TCP协议的Socket通信,实现用户登录*客户端*/public class Client{public static void main(String[] args){try{//1创建客户端Socket,指定服务器地址和端口 Socket socket = new Socket("localhost",8111);//2获取输出流,向服务器端发送信息//字节输出流OutputStream os = socket.getOutputStream();//将输出流包装为打印流PrintWriter pw = new PrintWriter(os);pw.write("用户名:admin;密码:123");pw.flush();//关闭输出流socket.shutdownOutput();//获取输入流,并读取服务器端的响应信息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();}catch(MalformedURLException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();} }}</span>
运行结果:
服务器端结果:
客户端结果:
- JavaSE入门学习48:Socket网络通信编程(二)
- JavaSE入门学习48:Socket网络通信编程(二)
- JavaSE入门学习47:Socket网络通信编程(一)
- JavaSE入门学习49:Socket网络通信编程(三)
- JavaSE入门学习47:Socket网络通信编程(一)
- JavaSE入门学习49:Socket网络通信编程(三)四通过Socket实现TCP编程
- JavaSE入门学习51:多线程编程(二)
- JavaSE入门学习51:多线程编程(二)
- JavaSE入门学习51:多线程编程(二)
- windows下socket 网络通信编程二
- socket网络通信入门
- socket网络通信<二>
- 网络通信 Socket 编程
- 【网络编程】之二、socket API学习
- java网络编程Socket学习(二)
- java网络编程Socket学习(二)
- 【网络编程】之二、socket API学习
- Java网络编程之Socket通信(二)
- word embedding
- JavaSE入门学习49:Socket网络通信编程(三)四通过Socket实现TCP编程
- GDB调试命令
- 求list倒数value
- runtime解析json数据
- JavaSE入门学习48:Socket网络通信编程(二)
- Nginx负载均衡配置实例详解
- latch -buffer busy wait 之索引数据块争用导致热块
- es查看索引的存储范例
- JavaSE入门学习47:Socket网络通信编程(一)
- 关于安卓图片的问题
- App Bar Google官方课程翻译
- Retrofit--合理封装回调能让你的项目高逼格
- comparator接口与Comparable接口的区别