servframe.txt
来自「本程序用java语言实现了socket通信服务器端程序」· 文本 代码 · 共 142 行
TXT
142 行
package sockproj;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import com.borland.jbcl.layout.*;
public class ServFrame extends JFrame {
JPane1 contentPane;
JLabel jLabel1=new JLabel();
JTextField jTextField1=new JTextField();
JLabel jLabel2=new JLabel();
JComboBox jComboBox1=new JComboBox();
XYLayout xYLayout1=new XYLayout();
JButton jButton1=new JButton();
JButton jButton2=new JButton();
JScrollPane jScrollPane1=new JScrollPane();
JTextArea jTextArea1=new JTextArea();
ServerSocket SSocket1;
Socket Socket1;
InputStream is;
OutputStream os;
BufferedReader br;
PrintWriter pw;
String client;
int port1;
//构建界面
public servFrame(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try{
jbInit();
}
catch(Exception e){
e.printStackTrace();
}
}
//组建初始化
private void jbInit() throws Exception{
contentPane=(JPane1)this.getContentPane();
jLabel1.setText("消息");
contentPane.setLayout(xyLayout1);
this.setSize(new Dimension(400,300));
this.setTitle("服务器端");
jTextField1.setText("jTextField1");
jLabel2.setText("客户端");
jButton1.setText("连接");
jButton1.addActionListener(new ServFrame_jButton1_actionAdapter(this));
jButton2.setText("发送");
jButton2.addActionListener(new ServFrame_jButton2_actionAdapter(this));
contentPane.add(jButton1,new XYConstraints(232,1,-1,-1));
contentPane.add(jButton2,new XYConstraints(232,32,-1,-1));
contentPane.add(jScrollPane1,new XYConstraints(15,66,372,224));
contentPane.add(jComboBox1,new XYConstraints(100,3,116,-1));
contentPane.add(jTextField1,new XYConstraints(100,34,115,-1));
contentPane.add(jLabel2,new XYConstraints(41,11,-1,-1));
contentPane.add(jLabel1,new XYConstraints(45,37,-1,-1));
jScrollPane1.getViewport().add(jTextArea1,null);
serverStart();System.out.println("ok0");
}
//关闭窗口时退出
protected void processWindowEvent(WindowEvent e){
super.processWindowEvent(e);
if(e.getID()==WindowEvent.WINDOW_CLOSING){
System.exit(0);
}
}
public void serverStart(){
try{
SSocket1=new ServerSocket(8080);
}
catch(Exception e){
JOptionPane.showMessageDialog(this,"err:"+toString());
}
}
class receiver implements Runnable{
public receiver(){}
public void run(){
try{
is=Socket1.getInputStream();
os=Socket1.getOutputStream();
br=new BufferedReader(new InputStreamReader(is));
pw=new PrintWriter(os);
}
catch(Exception e1){}
String str="";
while(true){
try{
str=br.readLine();
if(str!=null){
if(!str.equals("e")){//"e"为客户端发过来的信息,表示终止连接
jTextArea1.append("from"+Thread.currentThread().getName()+":"+str+"\n");
}
else{
is.close();
os.close();
br.close();
pw.close();
jComboBox1.removeItem(client);
}
}
}
catch(Exception e){
}
}
}
}//receiver
void jButton1_actionPerformed(ActionEvent e){
try{
jButton1.setEnabled(false);
Socket1=SSocket1.accept();System.out.println("ok1");
jTextArea1.append("localport:"+SSocket1.getLocalPort()+"\n");
client=Socket1.getInetAddress().toString();
jComboBox1.addItem(client);
jTextArea1.append("client has connected:"+client+"\n");
port1=Socket1.getPort();
jTextArea1.append("port:"+port1+"\n");
Thread t1=new Thread(new receiver(),"client1");
t1.start();
}
catch(Exception e1){
JOptionPane.showMessageDialog(this,"err:"+e1.toString());
}
}
void jButton2_actionPerformed(ActionEvent e){
String str="";
if(Socket1!=null){
try{
str=jTextField1.getText()+"\n";
jTextArea1.append("to client1:"+str);
pw.write(str);
pw.flush();
jTextField1.setText("");
}
catch(Exception e1){
JOptionPane.showInternalMessageDialog(this,"err:"+e1.toString());
}
}
}
}//ServFrame
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?