📄 client.java
字号:
package aa;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
//import javax.servlet.*;
public class Client extends Frame implements
ActionListener,Runnable {
private TextField t1,t2;
private Label l1,l2;
private TextArea ta1,ta2;
private Socket sock;
private BufferedReader br;
private PrintWriter pw;
public Client(){
try{
setLayout(new GridLayout(6,1));
Panel p=new Panel();
t1=new TextField(20);
t2=new TextField(10);
l1=new Label("IP地址 ");
l2=new Label("对应端口 ");
Button bt=new Button("连接");
bt.setBackground(Color.CYAN);
p.add(l1);
p.add(t2);
p.add(l2);
p.add(t2);
add(p);
ta1=new TextArea(100,300);
add(new Label("消息框"));
add(ta1);
add(new Label("用户输入框"));
ta2=new TextArea(30,300);
add(ta2);
Panel p2=new Panel();
Button b=new Button("发送");
b.setBackground(Color.gray);
p2.add(b);
add(p2);
setTitle("客户端");
setSize(300,450);
setResizable(false);
setVisible(true);
//捕获各种的异常
bt.addActionListener(this);
// b.addActionListener(this);
//增加了一个关闭的事件
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent exit){ System.exit(0);}});
Thread ThreadReader=new Thread(this);
ThreadReader.start();
b.addActionListener(this);
sock=new Socket("localhost",9999);
br=new BufferedReader(new InputStreamReader(sock.getInputStream()));
pw=new PrintWriter(new OutputStreamWriter(sock.getOutputStream()),true);
pw.println("hello.");
new ClientService(br,this).start();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
public void message(String s){
System.out.println("got a reply message:'"+s+"'");
}
public static void main(String[] args) {
new Client();
}
public void run(){
while(true){
try{
ta1.append("\n #_____________________________#\n"+br.readLine());
}catch(Exception e){System.out.println(e.getMessage());}
}
}
public void actionPerformed(ActionEvent e)
{
String command=e.getActionCommand();
if("发送".equals(command)) {
if(ta2.getText().trim()!=null){
ta1.append("\n 客户端的消息:\n"+ta2.getText());
pw.println(ta2.getText()+"\n");//" \n 客户短信: \n "
}
else if(ta2.getText().trim()==null){
ta1.append("请输入完整的IP地址与端口以及、\n"+"不能空发消息");}
ta2.setText(" "); //结束的时候清空文本框
}
else if("连接".equals(command)){
try{
//借助连接的按钮完成远程pc的连接的工作。建立输入与输出流两个工具
s=new Socket(tf1.getText().toString(),Integer.parseInt((tf2.getText()).trim()));
//Integer.parseInt((tf2.getText()).trim())
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(s.getOutputStream(),true);
//ta1.append("\n 服务端来消息:\n"+br.readLine());
}
catch(Exception ex){
//ta1.append("产生了输入输出异常无法完成交互!");
}
}
}
}
class ClientService extends Thread{
Socket sock;
BufferedReader br;
Client client;
public ClientService(BufferedReader b,Client c){
br=b;
client=c;
}
public void run(){
while(true){
try{
String s=br.readLine();
if(s==null || s.equals("bye")){
break;
}
client.message(s);
}catch(Exception e){
System.out.println(e.getMessage());
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -