2 个类
import java.io.*;
//import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
public class ChatClient {
public static void main(String[] args)
{
ChatClient cc=new ChatClient();
cc.receive();
}
JTextField jtf;
JTextArea jta;
Socket s;
PrintWriter out;
BufferedReader in;
public ChatClient(){
JFrame frame = new JFrame("ChatClient");
frame.setSize(400,300);
jta = new JTextArea();
jta.setEditable(false);
jtf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg){
send();
}
});
frame.getContentPane().add(new JScrollPane(jta));
frame.getContentPane().add(jtf,"south");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
try{
s = new Socket("127.0.0.1",3000);
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(s.getOutputStream());
}catch (UnknownHostException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
public void receive(){
while(true){
try{
String text =in.readLine();
this.jta.append(text + "\n");
}catch (IOException e){
e.printStackTrace();
return;
}
}
}
public void send(){
String text = this.jtf.getText();
out.println(text);
out.flush();
}
}//第2个类
import java.net.*;
import java.io.*;
import java.util.*;
public class ChatServer {
public static void main(String [ ] args) throws Exception
{
ServerSocket ss = new ServerSocket(3000);
List list = new ArrayList();
while(true){
Socket s = ss.accept();
list.add(s);
Thread t = new ServerThread(s,list);
t.start();
}
}
}class ServerThread extends Thread{
Socket s;
List list;
PrintWriter out;
BufferedReader in;
public ServerThread(Socket s,List list){
this.s = s;
this.list = list;
try {
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(s.getOutputStream());
}catch (IOException e){
e.printStackTrace();
}
}
public void run(){
while(true){
try{
String str = in.readLine();
if(str == null)
return;
Iterator it = list.iterator();
while(it.hasNext()){
Socket socket =(Socket)(it.next());
PrintWriter o = new PrintWriter(socket.getOutputStream());
o.println(str);
o.flush();
}
}catch (IOException e){
e.printStackTrace();
return;
}
}
}
}
import java.io.*;
//import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
public class ChatClient {
public static void main(String[] args)
{
ChatClient cc=new ChatClient();
cc.receive();
}
JTextField jtf;
JTextArea jta;
Socket s;
PrintWriter out;
BufferedReader in;
public ChatClient(){
JFrame frame = new JFrame("ChatClient");
frame.setSize(400,300);
jta = new JTextArea();
jta.setEditable(false);
jtf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg){
send();
}
});
frame.getContentPane().add(new JScrollPane(jta));
frame.getContentPane().add(jtf,"south");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
try{
s = new Socket("127.0.0.1",3000);
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(s.getOutputStream());
}catch (UnknownHostException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
public void receive(){
while(true){
try{
String text =in.readLine();
this.jta.append(text + "\n");
}catch (IOException e){
e.printStackTrace();
return;
}
}
}
public void send(){
String text = this.jtf.getText();
out.println(text);
out.flush();
}
}//第2个类
import java.net.*;
import java.io.*;
import java.util.*;
public class ChatServer {
public static void main(String [ ] args) throws Exception
{
ServerSocket ss = new ServerSocket(3000);
List list = new ArrayList();
while(true){
Socket s = ss.accept();
list.add(s);
Thread t = new ServerThread(s,list);
t.start();
}
}
}class ServerThread extends Thread{
Socket s;
List list;
PrintWriter out;
BufferedReader in;
public ServerThread(Socket s,List list){
this.s = s;
this.list = list;
try {
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(s.getOutputStream());
}catch (IOException e){
e.printStackTrace();
}
}
public void run(){
while(true){
try{
String str = in.readLine();
if(str == null)
return;
Iterator it = list.iterator();
while(it.hasNext()){
Socket socket =(Socket)(it.next());
PrintWriter o = new PrintWriter(socket.getOutputStream());
o.println(str);
o.flush();
}
}catch (IOException e){
e.printStackTrace();
return;
}
}
}
}
解决方案 »
- 哪个版本的 jdk IO 被用 NIO重新写过?
- 两个SQL考试题有心人帮帮忙
- 如何在jlable上边显示出从数据库里查询出来的数据
- 正则表达式-只能输入中文和空(什么都不输入)
- 从文件中读对象时抛出的异常:java.io.StreamCorruptedException: unexpected block data
- jtable的问题
- 请问下面程序算不算递归?
- 小妹刚开始学JAVA,遇到了一个小问题,各位高手帮帮忙。小妹在此先谢谢了
- 转贴:我的面向对象程序观
- ********************我现在在SOLARIS上安装了ORACLE8I,我想建立数据库,但我有一个问题一直没有解决,请大家进来看看!****************
- 不是说抽象类不可能生成对象吗?有点小疑惑
- 忽然犯傻了.以为这样调用也可以...
楼主【lg5113】截止到2008-07-29 13:10:52的历史汇总数据(不包括此帖):
发帖的总数量:8 发帖的总分数:125 每贴平均分数:15
回帖的总数量:12 得分贴总数量:3 回帖的得分率:25%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:8 未结的总分数:125
结贴的百分比:0.00 % 结分的百分比:0.00 %
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
另外frame.getContentPane().add(jtf,"south");中"south"应为"South",S大写
综上:public ChatClient() {
JFrame frame = new JFrame("ChatClient");
frame.setSize(400, 300);
jta = new JTextArea();
jtf = new JTextField();//这里要加
jta.setEditable(false);
jtf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg) {
send();
}
});
frame.getContentPane().add(new JScrollPane(jta));
frame.getContentPane().add(jtf, "South");//这里要改
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);...
...
}