- judeylove
- 等级: 初级会员
- 性别:
- 文章: 6
- 积分: 30
- 来自: 济南
|
服务器端:
java 代码
- import java.io.*;
- import java.net.*;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.util.*;
- public class ChatServe extends JFrame implements ActionListener{
-
- private JTextField jtf=new JTextField();
-
- private JTextArea jta=new JTextArea();
-
- private DataInputStream msgFromClient;
-
- private DataOutputStream msgToClient;
- public static void main(String[] args) {
- new ChatServe();
- }
- public ChatServe(){
-
- JPanel p=new JPanel();
- p.setLayout(new BorderLayout());
- p.add(new JLabel("写信息:"),BorderLayout.WEST);
- p.add(jtf,BorderLayout.CENTER);
- jtf.setHorizontalAlignment(JTextField.LEFT);
-
- getContentPane().setLayout(new BorderLayout());
-
- getContentPane().add(p,BorderLayout.SOUTH);
- getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);
-
- jtf.addActionListener(this);
-
- setTitle("聊天程序服务器端");
- setSize(500,300);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setVisible(true);
-
- try{
-
- ServerSocket serverSocket=new ServerSocket(8000);
- jta.append("聊天服务器开始时间"+new Date()+'\n');
- Socket socket=serverSocket.accept();
- msgFromClient=new DataInputStream(socket.getInputStream());
- msgToClient=new DataOutputStream(socket.getOutputStream());
-
- }
- catch(IOException ex){
- System.out.println(ex);
- }
-
- }
- public void actionPerformed(ActionEvent e){
- String actionCommand=e.getActionCommand();
- if(e.getSource() instanceof JTextField){
- try{
- String ToClient=jtf.getText().trim();
- msgToClient.writeBytes(ToClient);
- msgToClient.flush();
-
- jta.append("服务器:"+ToClient+'\n');
- String FromClient=msgFromClient.readUTF();
-
- jta.append("客户端:"+msgFromClient+'\n');
-
- }
- catch(IOException ex){
- System.out.println(ex);
- }
-
- }
- }
- }
客 户端:
java 代码
- import java.io.*;
- import java.net.*;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.util.*;
- public class ChatClient extends JFrame implements ActionListener{
-
- private JTextField jtf=new JTextField();
- private JTextArea jta=new JTextArea();
- private DataInputStream msgFromServer;
- private DataOutputStream msgToServer;
- public static void main(String[] args) {
- new ChatClient();
- }
- public ChatClient(){
- JPanel p=new JPanel();
- p.setLayout(new BorderLayout());
- p.add(new JLabel("写信息:"),BorderLayout.WEST);
- p.add(jtf,BorderLayout.CENTER);
- jtf.setHorizontalAlignment(JTextField.LEFT);
-
-
- getContentPane().setLayout(new BorderLayout());
-
- getContentPane().add(p,BorderLayout.SOUTH);
- getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);
-
- jtf.addActionListener(this);
-
- setTitle("聊天程序客户端");
- setSize(500,300);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setVisible(true);
-
- try{
-
-
- jta.append("聊天服务器开始时间"+new Date()+'\n');
- Socket socket=new Socket("localhost",8000);
- msgFromServer=new DataInputStream(socket.getInputStream());
- msgToServer=new DataOutputStream(socket.getOutputStream());
-
- }
- catch(IOException ex){
- System.out.println(ex);
- }
-
- }
- public void actionPerformed(ActionEvent e){
- String actionCommand=e.getActionCommand();
- if(e.getSource() instanceof JTextField){
- try{
- String ToServer=jtf.getText().trim();
- msgToServer.writeBytes(ToServer);
- msgToServer.flush();
-
- jta.append("客户端:"+ToServer+'\n');
- String FromServer=msgFromServer.readUTF();
- jta.append("服务器:"+FromServer+'\n');
- }
- catch(IOException ex){
- System.out.println(ex);
- }
-
- }
- }
- }
-
不仅都收不到对方的信息,而且连关闭窗口都关不了,不知道为什么.请!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- duanyu010
- 等级: 初级会员
- 性别:
- 文章: 2
- 积分: 30
- 来自: 湘潭
|
代码还真的多啊。
一路过去 全部是代码。呵呵
加油啊 。
|
返回顶楼 |
|
|
- gqf2008
- 等级: 初级会员
- 性别:
- 文章: 106
- 积分: 30
- 来自: 上海
|
写的有问题: 1、服务器端和客户端都必须有单独的读取流代码,这样才能在某一方写入消息是对方能接收到。 2、服务器端开了一个监听端口,必须用单独的线程来循环读取到达的连接。
|
返回顶楼 |
|
|