📄 connecserver.java
字号:
package sun.com.service.impl;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.*;
public class ConnecServer extends JFrame implements ActionListener {
//文件发送线程
//从网络中读取数据
class Connect extends Thread
{
public void run()
{
try{
//从网络读
BufferedReader br = new BufferedReader(new InputStreamReader(skt.getInputStream()));
for(;;){
ta.append("\n"+"Server Say:" + br.readLine()+"\n");
}
}
catch(Exception e){
ta.append("\n对方断线!");
}
}
}
private Socket skt;//用于连接服务器
private TextArea ta;
private JTextField txt_ip;
private JTextField txt_port;
private JButton Select;
private JButton btn_link;
private JTextField txt_send;
private JButton btn_send;
JFileChooser je;
//用户界面
public ConnecServer(){
super();
this.setBounds(500,100,400, 400);
Container cc = this.getContentPane();
// this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p1 = new JPanel();
cc.add(p1, BorderLayout.NORTH);
//用于添加txt对话文本框,和发送框
JPanel jp0=new JPanel();
cc.add(jp0, BorderLayout.CENTER);
//将txt框添加到中间
JPanel jpt=new JPanel();
jpt.setLayout(new BorderLayout());
ta = new TextArea();
jpt.add(ta, BorderLayout.WEST);
jp0.add(jpt,BorderLayout.WEST);
JPanel p2 = new JPanel();
cc.add(p2, BorderLayout.SOUTH);
p1.add(new JLabel("IP: "));
txt_ip = new JTextField("127.0.0.1",10);
p1.add(txt_ip);
p1.add(new JLabel("Port: "));
txt_port = new JTextField("8888",5);
p1.add(txt_port);
btn_link = new JButton("Connect");
p1.add(btn_link);
p2.setLayout(new BorderLayout());
txt_send = new JTextField();
// p2.add(Select,BorderLayout.LINE_START);
p2.add(txt_send,BorderLayout.CENTER);
btn_send = new JButton("Send");
p2.add(btn_send,BorderLayout.LINE_END);
//-----------------------
JPanel jp3=new JPanel();
Select = new JButton("Send File");
jp3.setLayout(new BorderLayout());
cc.add(jp3,BorderLayout.EAST);
jp3.add(Select,BorderLayout.EAST);
jp0.add(jp3,BorderLayout.EAST);
//----------------------------------------------
Select.addActionListener(this);
btn_link.addActionListener(this);
btn_send.addActionListener(this);
}
//按钮事件
public void actionPerformed(ActionEvent e) {
JOptionPane j=new JOptionPane();
if(e.getSource().equals(btn_link)){
try {
skt = new Socket(txt_ip.getText(), Integer.parseInt(txt_port.getText()));
ta.append("Connecting ok! ");
} catch (Exception e1) {
j.showMessageDialog(null, "Port or Address Error","Error",JOptionPane.ERROR_MESSAGE);
return;
}
// new Connect().start();
}
//发送聊天内容
if(e.getSource().equals(btn_send)){
PrintWriter pw;
try {
pw = new PrintWriter(skt.getOutputStream());
pw.println("\n"+txt_send.getText());
ta.append("I say:"+txt_send.getText()+"\n");
pw.flush();
} catch (Exception e1) {
j.showMessageDialog(null, "Send Error","Error",JOptionPane.ERROR_MESSAGE);
e1.printStackTrace();
return;
}
}
//文件的发送---------------------------------
if(e.getSource().equals(Select)){
try{
JFileChooser je=new JFileChooser("e:/");
int value=je.showOpenDialog(this);
je.setMultiSelectionEnabled(true);
ConnetFile cfile=new ConnetFile(value, je);
cfile.start();
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.println("发送文件完毕");
}
}
public static void main(String[] args) {
ConnecServer s=new ConnecServer();
s.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -