📄 talkserver.java
字号:
package Talk;
import java.net.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
public class TalkServer extends JFrame{
private JTextArea sentTextArea;
private JTextArea showTextArea;
private Socket connection;
private ServerSocket server;
private int counter;
private ObjectInputStream input;
private ObjectOutputStream output;
/**
* @param args
*/
public static void main(String[] args)
{
TalkServer server=new TalkServer();
server.runserver();
}
public TalkServer() {
super("服务器端");
this.setSize(500, 420);
getContentPane().setLayout(null);
final JPanel show = new JPanel();
show.setBorder(new TitledBorder(null, "对话", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
show.setLayout(new BorderLayout());
show.setBounds(14, 16, 468, 235);
getContentPane().add(show);
showTextArea = new JTextArea();
showTextArea.setBorder(new BevelBorder(BevelBorder.LOWERED));
show.add(showTextArea, BorderLayout.CENTER);
final JPanel sentpanl = new JPanel();
sentpanl.setBorder(new TitledBorder(null, "输入", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
sentpanl.setLayout(new BorderLayout());
sentpanl.setBounds(13, 269, 469, 72);
getContentPane().add(sentpanl);
sentTextArea = new JTextArea();
sentTextArea.setBorder(new BevelBorder(BevelBorder.LOWERED));
sentTextArea.setEnabled(false);
sentpanl.add(sentTextArea, BorderLayout.CENTER);
final JButton sentbutton = new JButton();
sentbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
String message=sentTextArea.getText();
sentmessage(message);
//System.out.println(message);
}
});
sentbutton.setText("发送");
sentbutton.setBounds(383, 350, 99, 23);
getContentPane().add(sentbutton);
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
final JButton off = new JButton();
off.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
sentmessage("TERMINATE");
}
});
off.setText("关闭");
off.setBounds(23, 350, 99, 23);
getContentPane().add(off);
}
private void waitconnet()
{
try
{
showTextArea.setText("waiting");
connection=server.accept();
showTextArea.append("\n"+"connection: "+counter+" host: "
+connection.getInetAddress().getHostName());
}
catch(IOException e){ System.out.println(e.getMessage()); }
}
private void getstream()
{
try
{
output =new ObjectOutputStream(connection.getOutputStream());
output.flush();
input=new ObjectInputStream(connection.getInputStream());
showTextArea.append("I/O : ok");
}
catch(IOException e){}
}
private void processconnect()
{
try{
String message = "SERVER>>> Connection successful";
output.writeObject( message );
output.flush();//刷新
sentTextArea.setEnabled(true);
do
{
try{
message=(String)input.readObject();
showTextArea.append("\n"+message);
showTextArea.setCaretPosition(
showTextArea.getText().length());//改变光标位置
}
catch ( ClassNotFoundException classNotFoundException ) {
showTextArea.append( "\nUnknown object type received" );
}
// catch(IOException e){System.out.println("processconnect1:"+e.getMessage());}
}
while(!message.equals( "CLIENT>>>TERMINATE" ));
}
catch(IOException e){System.out.println(e.getMessage());}
}
private void sentmessage(String message)
{
try{
output.writeObject("SERVER>>>"+message);
output.flush();
showTextArea.append("\nSERVER>>>"+message);
}
catch(IOException e){System.out.println("snebmessageEception"+e.getMessage());}
}
private void closeconnection()
{
try{showTextArea.append( "\nUser terminated connection");
sentTextArea.setEnabled( false );
output.close();
input.close();
connection.close();}
catch(IOException e)
{
System.out.println("closeconnection exception"+e.getMessage());
}
}
private void runserver()
{
try
{
server=new ServerSocket(5000);
while ( true ) {
waitconnet() ;
getstream();
processconnect();
closeconnection();
++counter;
}
}
catch(Exception e){}
}
}
//TODO 自动生成方法存根
/*try
{
ServerSocket server=null;
try{ server=new ServerSocket(4700);}//在4700监听
catch(Exception e)
{ System.out.println("can not listen to:"+e); }
Socket socket =null;
try{socket=server.accept();}//用accept等待客户请求,有客户请求到来 产生socket
catch(Exception e){System.out.println("accept"+e);}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os =new PrintWriter(socket.getOutputStream());
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("cl1:"+is.readLine());
line=sin.readLine();
while (!line.equals("bye"))
{
os.println(line);
os.flush();
System.out.println("se:"+line);
System.out.println("cl:"+is.readLine());
line=sin.readLine();
if (line==null) break;
}
os.close();
is.close();
sin.close();
socket.close();
server.close();
}
catch(Exception e)
{
System.out.println("all"+e);
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -