TCP协议实现网络通信简单例子

来源:互联网 发布:印度卫星导航系统 知乎 编辑:程序博客网 时间:2024/04/28 19:54



package util;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;/** * 客户端 */public class ChetClient {public static void main(String[] args) {try {Socket socket = new Socket("localhost", 10086);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();} catch (Exception e) {// TODO: handle exception}}}

package util;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 服务器端 */public class ChetServer {public static void main(String[] args) {try {ServerSocket serverSocket=new ServerSocket(10086);Socket socket=serverSocket.accept();InputStream is=socket.getInputStream();InputStreamReader isr=new InputStreamReader(is);BufferedReader br=new BufferedReader(isr);String info=null;while((info=br.readLine())!=null){System.out.println("我是服务器,客户端说:"+info);}socket.shutdownInput();OutputStream os=socket.getOutputStream();PrintWriter pw=new PrintWriter(os);pw.write("欢迎您");pw.flush();pw.close();os.close();br.close();isr.close();is.close();socket.close();serverSocket.close();} catch (Exception e) {// TODO: handle exception}}}

Socket通信的步骤
① 创建ServerSocket和Socket
② 打开连接到Socket的输入/输出流
③ 按照协议对Socket进行读/写操作
④ 关闭输入输出流、关闭Socket
服务器端:
① 创建ServerSocket对象,绑定监听端口
② 通过accept()方法监听客户端请求
③ 连接建立后,通过输入流读取客户端发送的请求信息
④ 通过输出流向客户端发送乡音信息
⑤ 关闭相关资源

1 0