我这有一个,给你了,还带有传文件功能,要给我加分啊,嘿嘿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){} } }
给你一个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(); } } }
不要求源代码吧,
飞鸽传书:http://www.azhi.net/IPMsg/
去网上帮你淘了个。
自己看看吧。
http://www.fwvv.net/Software/View-Software-4661.shtml
而且,程序本身就不难
socket你总知道吧,不知道查下apidoc
写两个java bean
写一个gui
让你的gui类去调用bean
如果需要可以发送邮件到[email protected]
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){}
}
}
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);
}}
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){}
}
}