编写两个java application应用程序,完成以下功能:
一个程序为服务端,建立TCP服务端套接字。
另外一个程序为客户端,建立TCP客户端套接字。
这两个程序可以互联,完成一个基于TCP/IP网络的文本聊天程序。
服务器:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
public static void main(String[] args) throws IOException { //创建服务器
PrintWriter pwtoclien = null; //字符打印输出流
Scanner keybordscanner = null;
Scanner inScanner = null;
ServerSocket ss = null;
System.out.println("等待客户端连接。。。");
ss = new ServerSocket(6666);
//创建一个接收连接客户端的对象
Socket socket = ss.accept();
System.out.println(socket.getInetAddress() + "已成功连接到此台服务器上。");
//字符输出流
pwtoclien = new PrintWriter(socket.getOutputStream());
pwtoclien.println("成功连接到服务器,请您先发言。");
pwtoclien.flush();
keybordscanner = new Scanner(System.in);
inScanner = new Scanner(socket.getInputStream());
//阻塞等待客户端发送消息过来
while (inScanner.hasNextLine()) {
String indata = inScanner.nextLine();
System.out.println("客户端:" + indata);
System.out.print("服务端:");
String keyborddata = keybordscanner.nextLine();
pwtoclien.println(keyborddata);
pwtoclien.flush();
}
//关闭资源
pwtoclien.close();
keybordscanner.close();
inScanner.close();
ss.close();
}
}
客户端:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws IOException { //创建客户端
Socket socket = null;
Scanner keybordscanner = null;
Scanner inScanner = null;
PrintWriter pwtoserver = null;
System.out.println("正在连接服务器。。。");
socket = new Socket("localhost", 6666); //套接字描述IP地址和端口
inScanner = new Scanner(socket.getInputStream());
System.out.println(inScanner.nextLine());
pwtoserver = new PrintWriter(socket.getOutputStream());
System.out.print("客户端:");
//先读取键盘录入方可向服务端发送消息
keybordscanner = new Scanner(System.in);
while (keybordscanner.hasNextLine()) {
String keyborddata = keybordscanner.nextLine();
//写到服务端的的控制台
pwtoserver.println(keyborddata);
pwtoserver.flush();
//阻塞等待接收服务端的消息
String indata = inScanner.nextLine();
System.out.println("服务端:" + indata);
System.out.print("客户端:");
}
//关闭资源
keybordscanner.close();
pwtoserver.close();
inScanner.close();
socket.close();
}
}
输出结果: