聊天室的问题 我要做一个聊天室,只要知道对方的IP、端口号就可以聊天,有那位给点提意 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用socket,一台机器运行服务端,ServerSocket(),客户端知道服务端ip,prot,用socket()连接。。具体你还是要去google搜一些相关的文章看看,有很多 import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.net.*;import java.io.IOException;public class ChatDemo extends JFrame { private JTextField tfIP,tfMessage; private List display; DatagramSocket ds = null; DatagramPacket dp = null; public ChatDemo(){ super("聊天程序"); //set up GUI JPanel southPanel= new JPanel(); southPanel.setLayout(new BorderLayout()); tfIP = new JTextField(10); tfMessage = new JTextField(15); southPanel.add(tfIP,BorderLayout.WEST); southPanel.add(tfMessage,BorderLayout.EAST); display = new List(); //display.setVisibleRowCount(10); getContentPane().add(display,BorderLayout.CENTER); getContentPane().add(southPanel,BorderLayout.SOUTH); try{ ds = new DatagramSocket(3000); } catch(SocketException e){ e.printStackTrace(); } new Thread( new Runnable(){ public void run(){ byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,1024); while(true){ try{ ds.receive(dp); display.add(new String(buf,0,dp.getLength())+"\n\n From:"+dp.getAddress().getHostAddress()+":"+ dp.getPort()); } catch(IOException e){ if(!ds.isClosed()) e.printStackTrace(); } } } } ).start(); tfMessage.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ try{ dp = new DatagramPacket(tfMessage.getText().getBytes(),tfMessage.getText().getBytes().length, InetAddress.getByName(tfIP.getText()),3000); ds.send(dp); tfMessage.setText(""); } catch(IOException e){ e.printStackTrace(); } } } ); addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent event){ ds.close(); dispose(); System.exit(0); } } ); setSize(300,400); setVisible(true); setResizable(false); } public static void main(String[] args){ ChatDemo application = new ChatDemo(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }} 关于视频分析!请各位大虾帮忙~!! 卡住了。关于Swing中关闭当前界面的问题 Java栈与堆又一篇烂文 关于线程池与匿名对象的执行先后顺序 java 怎么对一个button设置快捷键 请问 jdk 1.5 和jdk1.6有哪些区别??? 关于多态的使用 武汉的进:哪位知道武汉哪有卖最新版本的NetBeans或eclipse的中文教程 Class.forName()中的默认路径问题 问一下大家在HTML编辑器中字符长度的处理方式 面向对象问题 如何将从JTextField中得到的字符串写到数据库中的日期型列里
客户端知道服务端ip,prot,用socket()连接。。具体你还是要去google搜一些相关的文章看看,有很多
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.IOException;public class ChatDemo extends JFrame {
private JTextField tfIP,tfMessage;
private List display;
DatagramSocket ds = null;
DatagramPacket dp = null;
public ChatDemo(){
super("聊天程序");
//set up GUI
JPanel southPanel= new JPanel();
southPanel.setLayout(new BorderLayout());
tfIP = new JTextField(10);
tfMessage = new JTextField(15);
southPanel.add(tfIP,BorderLayout.WEST);
southPanel.add(tfMessage,BorderLayout.EAST);
display = new List();
//display.setVisibleRowCount(10);
getContentPane().add(display,BorderLayout.CENTER);
getContentPane().add(southPanel,BorderLayout.SOUTH);
try{
ds = new DatagramSocket(3000);
}
catch(SocketException e){
e.printStackTrace();
}
new Thread(
new Runnable(){
public void run(){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,1024);
while(true){
try{
ds.receive(dp);
display.add(new String(buf,0,dp.getLength())+"\n\n From:"+dp.getAddress().getHostAddress()+":"+
dp.getPort());
}
catch(IOException e){
if(!ds.isClosed())
e.printStackTrace();
}
}
}
}
).start();
tfMessage.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
try{
dp = new DatagramPacket(tfMessage.getText().getBytes(),tfMessage.getText().getBytes().length,
InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);
tfMessage.setText("");
}
catch(IOException e){
e.printStackTrace();
}
}
}
);
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent event){
ds.close();
dispose();
System.exit(0);
}
}
);
setSize(300,400);
setVisible(true);
setResizable(false);
}
public static void main(String[] args){
ChatDemo application = new ChatDemo();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}