-

- 加为好友
- 发送私信
- 在线聊天
javagxc
- 等级:

- 可用分等级:
- 总技术分:
- 总技术分排名:
|
| 发表于:2008-06-04 19:58:532楼 得分:0 |
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.io.*; import java.net.*; import java.util.*; public class gxc extends JFrame implements ActionListener { Calendar calendar=Calendar.getInstance(); int hour=calendar.get(Calendar.HOUR_OF_DAY); int minute=calendar.get(Calendar.MINUTE); int second=calendar.get(Calendar.SECOND); String time=""+hour+":"+minute+":"+second; String str=null; public static void main(String[] args) { gxc frame=new gxc(); } JButton command,command2,command3; JRadioButton rb[]=new JRadioButton[2]; JTextArea ta1; JTextField tf1,tf2,tf3; ServerSocket socket1; Socket insocket1,socket2; String inbuf; BufferedReader in1; PrintWriter out1; mt625_server t1; mt625_client t2; public gxc() { super("聊天室"); Container c=getContentPane(); c.setLayout(null); JLabel lb=new JLabel("TCP通信"); lb.setFont(new Font("楷体",Font.BOLD,16)); lb.setForeground(Color.green); lb.setSize(2000,20); lb.setLocation(10,2); c.add(lb); String str1[]={"服务端","客户端"}; ButtonGroup bg1=new ButtonGroup(); for(int i=0;i <2;i++) { rb[i]=new JRadioButton(str1[i]); rb[i].setFont(new Font("楷体",Font.BOLD,14)); rb[i].setForeground(Color.black); rb[i].setSize(80,20); rb[i].setLocation(10+i*80,27); c.add(rb[i]); bg1.add(rb[i]); } rb[0].setSelected(true); JLabel lb1=new JLabel("连接主机IP"); lb1.setFont(new Font("楷体",Font.BOLD,16)); lb1.setForeground(Color.black); lb1.setSize(80,25); lb1.setLocation(16,55); c.add(lb1); tf1=new JTextField("10.255.11.199"); tf1.setForeground(Color.black); tf1.setSize(250,25); tf1.setLocation(120,55); c.add(tf1); command=new JButton("连接"); command.setFont(new Font("楷体",Font.BOLD,16)); command.setSize(110,20); command.setLocation(380,55); command.addActionListener(this); c.add(command); ta1=new JTextArea(); ta1.setForeground(Color.black); ta1.setSize(250,200); ta1.setLocation(120,85); c.add(ta1); JLabel lb3=new JLabel("发送"); lb3.setFont(new Font("楷体",Font.BOLD,16)); lb3.setForeground(Color.black); lb3.setSize(120,25); lb3.setLocation(10,300); c.add(lb3); tf2=new JTextField(); tf2.setForeground(Color.black); tf2.setSize(250,25); tf2.setLocation(120,300); c.add(tf2); command2=new JButton("发送(Enter)"); command2.setFont(new Font("楷体",Font.BOLD,16)); command2.setSize(110,25); command2.setLocation(380,300); command2.addActionListener(this); command2.setEnabled(false); c.add(command2); command2.setMnemonic(KeyEvent.VK_ENTER);//添加Alt+enter组合键 JLabel lb4=new JLabel("连接状态: "); lb4.setFont(new Font("楷体",Font.BOLD,14)); lb4.setForeground(Color.black); lb4.setSize(120,25); lb4.setLocation(180,27); c.add(lb4); tf3=new JTextField("未登录!"); tf3.setForeground(Color.black); tf3.setSize(120,25); tf3.setLocation(270,27); c.add(tf3); command3=new JButton("下线"); command3.setFont(new Font("楷体",Font.BOLD,16)); command3.setSize(110,20); command3.setLocation(380,85); command3.addActionListener(this); command3.setEnabled(false); c.add(command3); t1=new mt625_server(); t2=new mt625_client(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,400); setVisible(true); setLocation(300,300); } public void actionPerformed(ActionEvent e) { if(e.getSource()==command) { try{ if(rb[0].isSelected()==true) { str="服务器端:"; inbuf=""; tf2.setText(""); t1.start(); } else{ str="客户端:"; inbuf=""; tf2.setText(""); t2.start(); } } catch (Exception e2) {tf3.setText("错误");} } if(e.getSource()==command2) { out1.write(tf2.getText()+"\n"); out1.flush(); ta1.setText(ta1.getText()+"\n"+str+" "+time+"\n"+tf2.getText()+"\n"); tf2.setText(""); } if(e.getSource()==command3) { try{ if(rb[0].isSelected()==true) { insocket1.close(); tf3.setText("离线!"); command2.setEnabled(false); command3.setEnabled(false); System.exit(-1); }else { socket2.close(); tf3.setText("离线!"); command2.setEnabled(false); command3.setEnabled(false); System.exit(-1); } }catch (Exception e2) {tf3.setText("错误");} } } class mt625_server extends Thread { public mt625_server(){} public void run() { try{ command.setEnabled(false); tf3.setText("创建连接!"); tf1.setText(Inet4Address.getLocalHost().getHostAddress()); socket1=new ServerSocket(21); insocket1=socket1.accept(); in1=new BufferedReader(new InputStreamReader(insocket1.getInputStream())); out1=new PrintWriter(insocket1.getOutputStream(),true); while(true){ if(socket1.isBound()==true) { tf3.setText("在线!"); command2.setEnabled(true); command3.setEnabled(true); break; } } while(true){ inbuf=in1.readLine(); if(inbuf.length()>0) { ta1.append("客户端: "+time+"\n"+inbuf); ta1.append("\n"); } } } catch(Exception e){} } } class mt625_client extends Thread{ public mt625_client(){} public void run() { try{ command.setEnabled(false); tf3.setText("正在等待连接!"); socket2=new Socket(); socket2.connect(new InetSocketAddress(tf1.getText(),21),10002); in1=new BufferedReader(new InputStreamReader(socket2.getInputStream())); out1=new PrintWriter(socket2.getOutputStream(),true); while(true){ if(socket2.isConnected()==true) { tf3.setText("在线!"); command2.setEnabled(true); command3.setEnabled(true); break; } } inbuf=""; while(true){ inbuf=in1.readLine(); if(inbuf.length()>0) { ta1.append("服务端: "+time+"\n"+inbuf); ta1.append("\n"); } } }catch(Exception e){} } } } 正好有这个程序,给你了,自己看看,想想。 | | |
修改
删除
举报
引用
回复
| |