2 回答
已采纳
慕圣0830664
TA贡献41条经验 获得超26个赞
去看下这个课程,专门讲的这个例子 http://www.imooc.com/learn/161
给你些代码参照一下:
/* 2017年5月10日13:06:53 TCP协议是面向连接、可靠的、有序的,以字节流的方式发送数据 基于TCP协议实现网络通信的类 客户端的Socket类 服务器端的ServerSocket类 创建客户端大概步骤: 1、创建Socket对象,指明需要连接的服务器的地址和端口号 2、连接建立后,通过输出流向服务器端发送请求信息 3、通过输入流获取服务器响应的信息 4、关闭相关资源 */ import java.io.OutputStream; import java.io.PrintWriter; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; //客户端 public class Client { public static void main(String[] args) { try { //创建客户端Socket,指定服务器地址和端口号,执行此语句时,自己向服务器端发送联接请求 Socket socket = new Socket("localhost", 8888); //通过Socket类中的getOutputStream()方法获取字节输出流 OutputStream os = socket.getOutputStream(); //将字节输出流转换成PrintWriter打印流 PrintWriter pw = new PrintWriter(os); //向服务器端发送信息 pw.write("用户名:zhangsan; 密码:123" ); //刷新缓冲区 pw.flush(); socket.shutdownOutput(); //关闭输出流 //通过输入流接收服务器端发送过来的信息 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String info = null; while ((info = br.readLine()) != null) { System.out.println("我是客记端,服务器端说:" + info); } socket.shutdownInput(); //关闭输入流 //关闭相关资源 br.close(); pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } /* 2017年5月10日13:05:46 TCP协议是面向连接、可靠的、有序的,以字节流的方式发送数据 基于TCP协议实现网络通信的类 客户端的Socket类 服务器端的ServerSocket类 创建服务器端大概步骤: 1、创建ServerSocket对象,绑定监听端口 2、通过accept()方法监听客户端请求 3、连接建立后,通过输入流读取客户端发送的请求信息 4、通过输出流向客户端发送响应信息 5、关闭相关资源 */ import java.net.ServerSocket; import java.net.Socket; import java.io.InputStream; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; //服务器端 public class Server { public static void main(String[] args) { try{ //创建一个服务端Socket,即ServerSocket,指定绑定的端口号,并监听此端口 ServerSocket serverSocket = new ServerSocket(8888); System.out.println("***服务端即将启动,等待客户端的联接***"); //调用Socket类中的accept()方法监听客户端的请求 Socket socket = serverSocket.accept(); //调用Socket类中的getInputStream()方法,获取一个字节输入流 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(); //关闭输入流 PrintWriter pw = new PrintWriter(socket.getOutputStream()); pw.write("欢迎光临!"); pw.flush(); //关闭相关资源 pw.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
添加回答
举报
0/150
提交
取消