希望要一个聊天小程序,可以2台机子互相通信的,界面模式的,支持中文,功能简单,只有输入对方IP,和发送内容及收发的内容记录

解决方案 »

  1.   

    不要求java吧,
    不要求源代码吧,
    飞鸽传书:http://www.azhi.net/IPMsg/
      

  2.   

    课程设计吧,LZ懒了。
    去网上帮你淘了个。
    自己看看吧。
    http://www.fwvv.net/Software/View-Software-4661.shtml
      

  3.   

    baidu一下就n多了,有必要么
    而且,程序本身就不难
    socket你总知道吧,不知道查下apidoc
    写两个java bean
    写一个gui
    让你的gui类去调用bean
      

  4.   

    这个很简单呀用socket编程就可以实现,不过我做的只能在局域网里面实现。
      

  5.   

    Java开发的及时聊天软件,只能在局域网内使用。使用协议TCP/IP,开发工具JCreator
    如果需要可以发送邮件到[email protected]
      

  6.   

    我这有一个,给你了,还带有传文件功能,要给我加分啊,嘿嘿package bean;
    import java.net.*;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;
    import java.io.*;public class QQ implements ActionListener {
    Frame f = new Frame("局域网聊天工具");
    Label l1 = new Label("请输入你要发送的内容:");
    Label l2 = new Label("以下是你收到的内容:");
    JLabel l3 = new JLabel("输入对方的IP地址:"); TextArea in = new TextArea("", 7, 14, TextArea.SCROLLBARS_VERTICAL_ONLY);
    TextArea out = new TextArea("", 7, 14, TextArea.SCROLLBARS_VERTICAL_ONLY); JTextField ip = new JTextField("192.168.5.218"); Button send = new Button("发送");
    Button clear = new Button("清空记录");

    Calendar rightNow = Calendar.getInstance(); // 获取当前系统日期和时间
    int hour = rightNow.get(Calendar.HOUR_OF_DAY); // 获取当前时间的整点数
    int year = rightNow.get(Calendar.YEAR);
    int month = rightNow.get(Calendar.MONTH) + 1;
    int day = rightNow.get(Calendar.DATE);
    int minute = rightNow.get(Calendar.MINUTE);
    int second = rightNow.get(Calendar.SECOND); Font zt = new Font("宋体", Font.PLAIN, 12);
    Font zt1 = new Font("宋体", Font.PLAIN, 15); QQ() {
    f.setLayout(null);
    f.setVisible(true);
    f.setResizable(false);
    f.setBounds(250, 100, 500, 490);
    f.setBackground(Color.lightGray); f.add(l2);
    l2.setBounds(10, 30, 160, 30);
    l2.setFont(zt); f.add(out);
    out.setBackground(new Color(128, 255, 255));
    out.setForeground(Color.magenta);
    out.setFont(new Font("Times NEW Romaon", Font.PLAIN, 15));
    out.setBounds(10, 60, 340, 240);
    out.setEditable(false); f.add(l1);
    l1.setBounds(10, 300, 200, 30);
    l1.setFont(zt); f.add(in);
    in.setBounds(10, 330, 340, 110);
    in.setBackground(new Color(255, 255, 128));
    in.setFont(new Font("Times NEW Romaon", Font.PLAIN, 15));
    in.setForeground(Color.black); f.add(l3);
    l3.setBounds(360, 100, 140, 30);
    l3.setFont(zt1); f.add(ip);
    ip.setBounds(360, 180, 120, 25);
    ip.setFont(new Font("宋体", Font.PLAIN, 16)); f.add(send);
    send.setBounds(30, 450, 50, 25); f.add(clear);
    clear.setBounds(250, 450, 60, 25); send.addActionListener(this);
    clear.addActionListener(this);

    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    }); receive();
    } public void actionPerformed(ActionEvent e) {
    if (e.getSource() == send) {
    senddata();
    } else if (e.getSource() == clear) {
    out.setText("");
    }  
    }

    public static void main(String args[]) {
    new QQ();
    } void senddata() {
    try {
    String s1 = in.getText();
    if (s1.equals("")) {
    JOptionPane.showMessageDialog(null, "发送的内容不能为空!");
    return;
    }
    in.setText("");
    String ss = ip.getText();
    InetAddress me = InetAddress.getLocalHost();
    String he = me.getHostAddress();
    out.append("[" + me + "]:(" + year + "-" + month + "-" + day + " "
    + hour + ":" + minute + ":" + second + ")" + "\n" + s1
    + "\n");
    s1 = "From[" + me + "]:(" + year + "-" + month + "-" + day + " "
    + hour + ":" + minute + ":" + second + ")" + "\n" + s1;
    InetAddress address = InetAddress.getByName(ss);
    int len = s1.length();
    byte[] message = s1.getBytes();
    DatagramPacket packet = new DatagramPacket(message, message.length,
    address, 9999);
    DatagramSocket Socket = new DatagramSocket();
    Socket.send(packet);
    } catch (Exception e) {}
    } void receive() {
    try {
    byte[] buffer = new byte[1024];
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
    DatagramSocket Socket = new DatagramSocket(9999);
    while (true) {
    Socket.receive(packet);
    String s = new String(packet.getData(), 0, packet.getLength());
    out.append(s + "\n");
    packet = new DatagramPacket(buffer, buffer.length);
    }
    } catch (Exception e){}
    }  
    }
      

  7.   

    给你一个UDP 的!
    import java.awt.BorderLayout;
    import java.awt.Frame;
    import java.awt.List;
    import java.awt.Panel;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    public class Chat extends Frame { /**
     * @param args
     */
    List list = new List(10);
    TextField tfIp = new TextField("172.19.52.14",15);
    TextField tfTest = new TextField(20);
    DatagramSocket ds = null;
    public Chat(){
    try {
    ds= new DatagramSocket(3000);
    } catch (SocketException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    this.add(list,"Center");
    Panel p =new Panel();
    this.add(p,"South");
    p.setLayout(new BorderLayout());
    p.add(tfIp,"West");
    p.add(tfTest,"East");
    new Thread(new Runnable(){ public void run() {
    byte buf [] = new byte[1024];
    DatagramPacket dp = new DatagramPacket(buf,1024);
    while(true){
    try {
    ds.receive(dp);
    list.add(dp.getAddress().getHostName()+":"+dp.getPort(),0);
    list.add(new String(dp.getData()),1);
    } catch (Exception ex) {
    if(!ds.isClosed())
    ex.printStackTrace();
    }
    }
    }

    }).start();
    tfTest.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
    byte []buf =new byte[1024];
    buf = tfTest.getText().getBytes();
    try {
    DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIp.getText()),3000);
    ds.send(dp);
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    tfTest.setText("");
    }

    });
    this.pack();
    this.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    ds.close();
        dispose();
        System.exit(0);
    }
    });
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
              Chat c = new Chat();
              c.setTitle("聊天程序");
              c.setSize(300,400);
              c.setLocationRelativeTo(null);
              c.setResizable(false);
              c.setVisible(true);
    }}
      

  8.   

    上面那位仁兄  我运行时为什么是这样的 "Exception in thread "main" java.lang.Error: 无法解析的编译问题: at QQ.main(QQ.java:96)"!解释解释
      

  9.   

    package bean; 
    import java.net.*; 
    import java.awt.*; 
    import javax.swing.*; 
    import java.awt.event.*; 
    import java.util.*; 
    import java.io.*; public class QQ implements ActionListener { 
    Frame f = new Frame("局域网聊天工具"); 
    Label l1 = new Label("请输入你要发送的内容:"); 
    Label l2 = new Label("以下是你收到的内容:"); 
    JLabel l3 = new JLabel("输入对方的IP地址:"); TextArea in = new TextArea("", 7, 14, TextArea.SCROLLBARS_VERTICAL_ONLY); 
    TextArea out = new TextArea("", 7, 14, TextArea.SCROLLBARS_VERTICAL_ONLY); JTextField ip = new JTextField("192.168.5.218"); Button send = new Button("发送"); 
    Button clear = new Button("清空记录"); Calendar rightNow = Calendar.getInstance(); // 获取当前系统日期和时间 
    int hour = rightNow.get(Calendar.HOUR_OF_DAY); // 获取当前时间的整点数 
    int year = rightNow.get(Calendar.YEAR); 
    int month = rightNow.get(Calendar.MONTH) + 1; 
    int day = rightNow.get(Calendar.DATE); 
    int minute = rightNow.get(Calendar.MINUTE); 
    int second = rightNow.get(Calendar.SECOND); Font zt = new Font("宋体", Font.PLAIN, 12); 
    Font zt1 = new Font("宋体", Font.PLAIN, 15); QQ() { 
    f.setLayout(null); 
    f.setVisible(true); 
    f.setResizable(false); 
    f.setBounds(250, 100, 500, 490); 
    f.setBackground(Color.lightGray); f.add(l2); 
    l2.setBounds(10, 30, 160, 30); 
    l2.setFont(zt); f.add(out); 
    out.setBackground(new Color(128, 255, 255)); 
    out.setForeground(Color.magenta); 
    out.setFont(new Font("Times NEW Romaon", Font.PLAIN, 15)); 
    out.setBounds(10, 60, 340, 240); 
    out.setEditable(false); f.add(l1); 
    l1.setBounds(10, 300, 200, 30); 
    l1.setFont(zt); f.add(in); 
    in.setBounds(10, 330, 340, 110); 
    in.setBackground(new Color(255, 255, 128)); 
    in.setFont(new Font("Times NEW Romaon", Font.PLAIN, 15)); 
    in.setForeground(Color.black); f.add(l3); 
    l3.setBounds(360, 100, 140, 30); 
    l3.setFont(zt1); f.add(ip); 
    ip.setBounds(360, 180, 120, 25); 
    ip.setFont(new Font("宋体", Font.PLAIN, 16)); f.add(send); 
    send.setBounds(30, 450, 50, 25); f.add(clear); 
    clear.setBounds(250, 450, 60, 25); send.addActionListener(this); 
    clear.addActionListener(this); f.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
    System.exit(0); 

    }); receive(); 
    } public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == send) { 
    senddata(); 
    } else if (e.getSource() == clear) { 
    out.setText(""); 
    }  
    } public static void main(String args[]) { 
    new QQ(); 
    } void senddata() { 
    try { 
    String s1 = in.getText(); 
    if (s1.equals("")) { 
    JOptionPane.showMessageDialog(null, "发送的内容不能为空!"); 
    return; 

    in.setText(""); 
    String ss = ip.getText(); 
    InetAddress me = InetAddress.getLocalHost(); 
    String he = me.getHostAddress(); 
    out.append("[" + me + "]:(" + year + "-" + month + "-" + day + " " 
    + hour + ":" + minute + ":" + second + ")" + "\n" + s1 
    + "\n"); 
    s1 = "From[" + me + "]:(" + year + "-" + month + "-" + day + " " 
    + hour + ":" + minute + ":" + second + ")" + "\n" + s1; 
    InetAddress address = InetAddress.getByName(ss); 
    int len = s1.length(); 
    byte[] message = s1.getBytes(); 
    DatagramPacket packet = new DatagramPacket(message, message.length, 
    address, 9999); 
    DatagramSocket Socket = new DatagramSocket(); 
    Socket.send(packet); 
    } catch (Exception e) {} 
    } void receive() { 
    try { 
    byte[] buffer = new byte[1024]; 
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length); 
    DatagramSocket Socket = new DatagramSocket(9999); 
    while (true) { 
    Socket.receive(packet); 
    String s = new String(packet.getData(), 0, packet.getLength()); 
    out.append(s + "\n"); 
    packet = new DatagramPacket(buffer, buffer.length); 

    } catch (Exception e){} 

    }