要求:
基于TCP协议实现一个聊天程序,客户端发送一条数据,服务器端发送一条数据
客户端代码:
package Homework1;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .InetAddress;import .Socket;import .UnknownHostException;import java.util.Scanner;public class Client {public static void main(String[] args){System.out.println("客户端已启动");Socket socket=null;InputStream is=null;OutputStream os=null;try {//1.创建客户端套接字Socket对象socket=new Socket("Localhost", 8888);//2.创建与Socket对接的输入输出流对象is=socket.getInputStream();os=socket.getOutputStream();//3.创建聊天用的Scanner对象Scanner input=new Scanner(System.in);byte[] bs=new byte[1024];//4.给服务器(乙方)发送信息while(true){//输入要发送的数据String string=input.next();//将数据传输出去os.write(string.getBytes());os.flush();//如果有一方回复了:bye,则表示聊天结束if(string.equals("bye")){break;}//5.接收服务器(乙方)回复的消息int count=is.read(bs);if(new String(bs,0,count).equals("bye")){break;}System.out.println("服务器回复:"+new String(bs,0,count));}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(socket!=null){try {socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(os!=null){try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(is!=null){try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}
服务端:
package Homework1;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .ServerSocket;import .Socket;import java.util.Scanner;public class Server {public static void main(String[] args){System.out.println("服务端已启动");ServerSocket serverSocket=null;InputStream is=null;OutputStream os=null;try {//1.创建服务器端ServerSocket对象serverSocket=new ServerSocket(8888);//2.得到Socket对象socket=serverSocket.accept();//3.得到与Socket对应的输入输出流is=socket.getInputStream();os=socket.getOutputStream();//4.创建聊天使用的Scanner对象Scanner input=new Scanner(System.in);byte[] bs=new byte[1024];while(true){//5.接收客户端(甲方)信息int count=0;count=is.read(bs);//如果客户端回复了:bye,表示结束聊天if(new String(bs,0,count).equals("bye")){break;}System.out.println("客户端说:"+new String(bs,0,count));//6.回复客户端(甲方)String string=input.next();os.write(string.getBytes());os.flush();if(string.equals("bye")){break;}}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(os!=null){try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(is!=null){try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(socket!=null){try {socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(serverSocket!=null){try {serverSocket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}
运行结果:
客户端(甲方)聊天列表:
服务器端(乙方)聊天列表: