java网络编程这块 只要求两个文本框在同一个面板上,类似QQ那样,都能接受对方发的信息(服务器与客户机) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个首先涉及到Socket编程,还有GUI图形用户界面,如果是简单应用的话,这方面的例子网上也有,可以下载参考一下 SocketChannel和ServerSocketChannel - 3- 这个最好用UDP 相对的 服务器与客户端 以前就用UDP实现的 楼主可以试试看! 看一下socket ,和swing 方面的资料 就可以做出来了要求高的话再看看nio一块.. http://blog.csdn.net/bzwm/archive/2008/11/24/3361147.aspxqu kankan http://www.lifeispig.cn/article.asp?id=103 这里有一个楼主看一下吧,,, import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class ChatRoomClient implements ActionListener{ private JFrame jf; private JTextArea area; private JTextField field; private JLabel label; private JButton button; private String userName; private Socket s; private BufferedReader br; private PrintWriter pw; public ChatRoomClient(){ createSocket(); jf=new JFrame("聊天室客户端v1.0"); area=new JTextArea(20,40); field=new JTextField(25); button=new JButton("发送"); label=new JLabel(userName); JScrollPane jsp=new JScrollPane(area); jf.add(jsp,BorderLayout.CENTER); JPanel panel=new JPanel(); panel.add(label); panel.add(field); panel.add(button); jf.add(panel,BorderLayout.SOUTH); addEventHandler(); } public void createSocket(){ do { String hostName = JOptionPane.showInputDialog(jf, "请输入服务器主机名:"); String portName = JOptionPane .showInputDialog(jf, "请输入端口号:"); try { s = new Socket(hostName, Integer.parseInt(portName)); br=new BufferedReader(new InputStreamReader(s.getInputStream())); pw=new PrintWriter(s.getOutputStream()); } catch (Exception e) { JOptionPane.showMessageDialog(jf, "无法建立到服务器的连接,请重新输入!"); } } while (s==null); userName=JOptionPane.showInputDialog(jf,"请输入用户名:"); } public void actionPerformed(ActionEvent arg0) { String str=field.getText().trim(); if(str.equals("")){ JOptionPane.showMessageDialog(jf, "不能发送空消息!"); return; } pw.println(str); pw.flush(); field.setText(""); } public void addEventHandler(){ button.addActionListener(this); jf.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent arg0) { int op=JOptionPane.showConfirmDialog(jf,"确认退出聊天室吗?","确认退出",JOptionPane.YES_NO_OPTION); if(op==JOptionPane.YES_OPTION){ pw.println("%EXIT%:"+userName); pw.flush(); try { Thread.sleep(200); s.close(); } catch (Exception e) { } System.exit(0); } } }); } public void showMe(){ jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); new ReadMessageThread().start(); } class ReadMessageThread extends Thread{ public void run(){ while(true){ try { String str=br.readLine(); area.append(str+"\n"); } catch (IOException e) { } } } } public static void main(String[] args) { new ChatRoomClient().showMe(); }} import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.HashSet;public class ChatRoomServer { private ServerSocket ss; private HashSet<Socket> allSockets;//存放所有客户端的链接 public ChatRoomServer(){ try { ss=new ServerSocket(9999); allSockets=new HashSet<Socket>(); } catch (IOException e) { e.printStackTrace(); } } public void startService() throws IOException{ while(true){ Socket s=ss.accept(); allSockets.add(s); new ChatRoomServerThread(s).start(); } } class ChatRoomServerThread extends Thread{ private Socket s; public ChatRoomServerThread(Socket s){ this.s=s; } public void run(){ try { BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); while(true){ String data = br.readLine(); if(data.indexOf("%EXIT%") >= 0){ allSockets.remove(s); //br.close(); s.close(); break; } for(Socket e:allSockets){ System.out.println(e.getInetAddress()); PrintWriter pw = new PrintWriter(e.getOutputStream()); pw.println(data); pw.flush(); } } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { try { new ChatRoomServer().startService(); } catch (IOException e) { e.printStackTrace(); } }} 《java编程思想》和《java核心技术 I》哪本适合初学者看? java中的内存分配问题 做了一个类似QQ表情框,有点问题,请大家看下。。 String 转换成 Date 在程序中能不能不申明抛出异常(throws Exception)而直接抛出异常(throw Exception) 如何将JAVA文件和编译好的类文件分开 30分求JAVADOC中文补丁 一个简单问题,在线等待!! 这个东西是干嘛用的? 今之江湖 ,谁才是一等一的JAVA高手 ,过来看招 java 与时间问题,急.希望各路大侠来看看,进来者皆有分 java运行报java.lang.NullPointerException错
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class ChatRoomClient implements ActionListener{
private JFrame jf;
private JTextArea area;
private JTextField field;
private JLabel label;
private JButton button;
private String userName;
private Socket s;
private BufferedReader br;
private PrintWriter pw;
public ChatRoomClient(){
createSocket();
jf=new JFrame("聊天室客户端v1.0");
area=new JTextArea(20,40);
field=new JTextField(25);
button=new JButton("发送");
label=new JLabel(userName);
JScrollPane jsp=new JScrollPane(area);
jf.add(jsp,BorderLayout.CENTER);
JPanel panel=new JPanel();
panel.add(label);
panel.add(field);
panel.add(button);
jf.add(panel,BorderLayout.SOUTH);
addEventHandler();
}
public void createSocket(){
do {
String hostName = JOptionPane.showInputDialog(jf,
"请输入服务器主机名:");
String portName = JOptionPane
.showInputDialog(jf, "请输入端口号:");
try {
s = new Socket(hostName, Integer.parseInt(portName));
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(s.getOutputStream());
} catch (Exception e) {
JOptionPane.showMessageDialog(jf, "无法建立到服务器的连接,请重新输入!");
}
} while (s==null);
userName=JOptionPane.showInputDialog(jf,"请输入用户名:");
}
public void actionPerformed(ActionEvent arg0) {
String str=field.getText().trim();
if(str.equals("")){
JOptionPane.showMessageDialog(jf, "不能发送空消息!");
return;
}
pw.println(str);
pw.flush();
field.setText("");
} public void addEventHandler(){
button.addActionListener(this);
jf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent arg0) {
int op=JOptionPane.showConfirmDialog(jf,"确认退出聊天室吗?","确认退出",JOptionPane.YES_NO_OPTION);
if(op==JOptionPane.YES_OPTION){
pw.println("%EXIT%:"+userName);
pw.flush();
try {
Thread.sleep(200);
s.close();
} catch (Exception e) {
}
System.exit(0);
}
}
});
}
public void showMe(){
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
new ReadMessageThread().start();
}
class ReadMessageThread extends Thread{
public void run(){
while(true){
try {
String str=br.readLine();
area.append(str+"\n");
} catch (IOException e) {
}
}
}
} public static void main(String[] args) {
new ChatRoomClient().showMe();
}}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;public class ChatRoomServer {
private ServerSocket ss;
private HashSet<Socket> allSockets;//存放所有客户端的链接
public ChatRoomServer(){
try {
ss=new ServerSocket(9999);
allSockets=new HashSet<Socket>();
} catch (IOException e) {
e.printStackTrace();
}
}
public void startService() throws IOException{
while(true){
Socket s=ss.accept();
allSockets.add(s);
new ChatRoomServerThread(s).start();
}
}
class ChatRoomServerThread extends Thread{
private Socket s;
public ChatRoomServerThread(Socket s){
this.s=s;
}
public void run(){
try {
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
while(true){
String data = br.readLine();
if(data.indexOf("%EXIT%") >= 0){
allSockets.remove(s);
//br.close();
s.close();
break;
}
for(Socket e:allSockets){
System.out.println(e.getInetAddress());
PrintWriter pw = new PrintWriter(e.getOutputStream());
pw.println(data);
pw.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
try {
new ChatRoomServer().startService();
} catch (IOException e) {
e.printStackTrace();
}
}
}