2 pan cras Pan_cras 于 2016.04.04 19:34 提问

Java的网络编程(聊天小程序)

放上源程序代码
服务端:

import java.io.*;
import java.net.*;
import java.util.ArrayList;

public class TalkServer {
public static ArrayList<Client> allClient = new ArrayList<Client>();
public static int clientNum = 0;

/**
 * @param args
 */
public static void main(String[] args) {
    try {
        ServerSocket serverSocket = new ServerSocket(5432);
        while (true) {
            Socket socket = serverSocket.accept();
            DataOutputStream dataOutputStream = new DataOutputStream(
                    socket.getOutputStream());
            DataInputStream dataInputStream = new DataInputStream(
                    socket.getInputStream());
            Client client = new Client(clientNum, dataOutputStream,
                    dataInputStream);
            allClient.add(client);
            client.start();
            clientNum++;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

class Client extends Thread {
int id;
DataOutputStream dataOutputStream;
DataInputStream dataInputStream;

public Client(int id, DataOutputStream dataOutputStream,
        DataInputStream dataInputStream) {
    this.id = id;
    this.dataOutputStream = dataOutputStream;
    this.dataInputStream = dataInputStream;
}

public void run() {
    while (true) {
        try {
            String message = dataInputStream.readUTF();
            int m = TalkServer.clientNum;
            for (int i = 0; i < m; i++) {
                TalkServer.allClient.get(i).dataOutputStream
                        .writeUTF(message);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
}

客户端

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.JOptionPane;

public class TalkClient {

/**
 * @param args
 * @throws IOException
 * @throws UnknownHostException
 */
public static void main(String[] args) throws UnknownHostException,
        IOException {
    Socket socket = new Socket("localhost", 5432);
    DataInputStream dataInputStream = new DataInputStream(
            socket.getInputStream());
    final DataOutputStream dataOutputStream = new DataOutputStream(
            socket.getOutputStream());
    Frame frame = new Frame("client");
    Panel panel = new Panel();
    final TextField input = new TextField(20);
    TextArea displayArea = new TextArea(5, 20);
    displayArea.setEditable(false);
    panel.add(input);
    panel.add(displayArea);
    frame.add(panel);
    final String name = JOptionPane.showInputDialog("输入您的昵称:");
    new receiveThread(dataInputStream, displayArea);
    input.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                dataOutputStream.writeUTF(name + ":"
                        + input.getText());
            } catch (IOException exception) {
                exception.printStackTrace();
            }
        }
    });
    frame.setSize(300, 300);
    frame.setVisible(true);
}

}

class receiveThread extends Thread {
DataInputStream dataInputStream;
TextArea displayArea;

public receiveThread(DataInputStream dataInputStream, TextArea displayArea) {
    this.dataInputStream = dataInputStream;
    this.displayArea = displayArea;
    this.start();
}

public void run() {
    for (;;) {
        try {
            String str = new String(dataInputStream.readUTF());
            displayArea.append(str + "\n");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
}

TalkServer是服务器代码
TalkClinet是客户端代码
这是一个简易的聊天程序。
(1)如何修改服务方,使用户自己发送的消息不显示在自己的文本域中。
(2)在客户方显示用户列表,可以选择将信息发送给哪些用户。
(3)如何在服务方对退出的用户进行处理,保证聊天发送的消息只发给在场的用户。

3个回答

CSDNXIAON
CSDNXIAON   2016.04.04 19:41
已采纳

Java网络编程以及简单的聊天程序
JAVA网络编程——简单的聊天程序
JAVA 网络编程 UDP(聊天程序)
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

caozhy
caozhy   Ds   Rxr 2016.04.04 22:47
dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.04.05 09:29

你试试环信吧,百度imgeek即可

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java网络编程之Tcp协议下的聊天小程序
需求:服务端和客户端实现一句一句的聊天。服务端package com.itheima;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import
利用多线程与网络编程编写的实时聊天小程序
客户端代码: package Oracle; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class ClientTh
java TCPSocket聊天小程序
java TCPSocket聊天小程序
Java网络编程大作业,实现聊天室功能
牛逼的东西,自己手写的,正常运行,请尽快下载。
用Socket实现聊天小程序
最近在学习网络编程,发现也并没有想象中的那么难。以前总是有意无意听身边朋友在谈论多线程、Socket网络编程等等,由于对网络编程一无所知,所以给我一种“应该很难”的错觉。       一台计算机和另一台计算机是如何通过网络互相通信、传递数据的?  HTTP协议、TCP/IP、UDP到底是什么玩意?    进程和线程有什么区别?      IP地址、端口又是什么?      大名鼎鼎的Socket是用来干嘛的?       这些问题都是以前最困扰我的,这两天终于给弄称敨了。在这里简单巩固下,如果你也想知道这些
java聊天程序
网络编程  java简单聊天小程序
Java网络编程以及简单的聊天程序
网络编程技术是互联网技术中的主流编程技术之一,懂的一些基本的操作是非常必要的。这章主要讲解网络编程,UDP和Socket编程,以及使用Socket做一个简单的聊天软件。
java网络编程实现一个聊天程序
网络编程 l网络模型 OSI参考模型 TCP/IP参考模型 l网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 lIP地址:InetAddress 网
socket实现简易聊天小程序
这是网络编程的小练习,在Linux下用socket,epoll实现服务器端与客户端的通信。
java聊天室小程序+源代码
今天把以前忘记的又看了一遍,这是一个java开发的聊天小程序,分为客户端和服务器端,我都是在本机上搞的,如果有局域网就把里面的client的IP改成运行server.jar的机子的IP,然后再打个jar包就可以了。运行时,必须在有java虚拟机环境下,先双击server.jar包,打开Admin-star,然后打开client.jar。。可以同时多人玩 剩下的你自己就ok啦