用JAVA编写一个客户机服务器聊天程序 20

编程实现客户机服务器聊天程序,建立客户机进程和服务器进程,通过消息队列实现消息的传递,在客户机进程中实现用户登录,消息的发送;服务器进程实现接受客户机进程发送来的消息,并... 编程实现客户机服务器聊天程序,建立客户机进程和服务器进程,通过消息队列实现消息的传递,在客户机进程中实现用户登录,消息的发送;服务器进程实现接受客户机进程发送来的消息,并显示接受内容,发送给客户机应答消息。
用消息队列通信……
展开
 我来答
niulu90
2010-07-06 · TA获得超过2472个赞
知道小有建树答主
回答量:1005
采纳率:0%
帮助的人:937万
展开全部
服务器端(注意要先启动服务器端)

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

public class server extends Frame implements ActionListener {
Label label = new Label("交谈内容");
Panel panel = new Panel();
TextField tf = new TextField(10);
TextArea ta = new TextArea();
ServerSocket server;
Socket client;
InputStream in;
OutputStream out;

public server() {
super("服务器");
setSize(250, 250);
panel.add(label);
panel.add(tf);
tf.addActionListener(this);
add("North", panel);
add("Center", ta);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
show();
try {
server = new ServerSocket(4000);
client = server.accept();
ta.append("客户机是:" + client.getInetAddress().getHostName() + "\n\n");
in =client.getInputStream();
out= client.getOutputStream();
} catch (IOException ioe) {
}
while (true) {
try {
byte[] buf = new byte[256];
in.read(buf);
String str = new String(buf);
ta.append("客户机说:" + str + "\n\n");
} catch (IOException e) {
}
}
}

public void actionPerformed(ActionEvent e) {
try {
String str = tf.getText();
byte[] buf = str.getBytes();
tf.setText(null);
out.write(buf);
ta.append("我说:" + str + "\n");
} catch (IOException ioe) {
}
}

public static void main(String[] args) {
new server();
}
}

客户端

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

public class client extends Frame implements ActionListener {
Label label = new Label("交谈内容");
Panel panel = new Panel();
TextField tf = new TextField(10);
TextArea ta = new TextArea();
Socket client;
InputStream in;
OutputStream out;

public client() {
super("客户机");
setSize(250, 250);
panel.add(label);
panel.add(tf);
tf.addActionListener(this);
add("North", panel);
add("Center", ta);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
show();
try {
client = new Socket(InetAddress.getLocalHost(), 4000);
ta.append("服务器是:" + client.getInetAddress().getHostName() + "\n\n");
in = client.getInputStream();
out = client.getOutputStream();
} catch (IOException ioe) {
}
while (true) {
try {
byte[] buf = new byte[256];
in.read(buf);
String str = new String(buf);
ta.append("服务器说:" + str + "\n");
} catch (IOException e) {
}
}
}

public void actionPerformed(ActionEvent e) {
try {
String str = tf.getText();
byte[] buf = str.getBytes();
tf.setText(null);
out.write(buf);
ta.append("我说:" + str + "\n");
} catch (IOException iOE) {
}
}

public static void main(String args[]) {
new client();
}
}

这个只能在自己一台电脑上先启动服务器再启动客户端才行,要想一台机子启动服务器端一台机子启动客户端需要把客户端的 client = new Socket(InetAddress.getLocalHost(), 4000);改成 client = new Socket("服务器Ip", 4000);(前提是两台机子连在局域网里面的)
niu258375967
2010-07-07 · TA获得超过248个赞
知道小有建树答主
回答量:181
采纳率:100%
帮助的人:0
展开全部
我百度空间里有QQJava代码,自己看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式