二。论坛的话非CSDN莫数了,中国最大的程序员论坛。地址是47744390
三。我也是初学者,以后可以一起交流。我QQ是158971310
四。大家一起进步,加油
很久前写的代码了,以前能运行。电脑没装jdk,没试试,自己试一下把。。---------------服务器------------
import java.awt.*
import java.awt.event.*
import java.net.*
import java.io.*
import java.util.logging.Level
import java.util.logging.Logger
class myframe extends Frame implements ActionListener,WindowListener,Runnable,KeyListener
{
Thread mythread = new Thread(this)
Socket mysocket
DataInputStream in
DataOutputStream out
Label label_ip = new Label("IP")
Label label_port = new Label("Port")
TextField text_ip = new TextField("127.1.1.0",15)
TextField text_port = new TextField("8888",15)
Button button_connect = new Button("连接")
TextArea text_area_show = new TextArea()
TextField text_send = new TextField(45)
Button button_send = new Button("发送")
myframe()
{
Panel panel1 = new Panel()
Panel panel2 = new Panel()
panel1.setLayout(new FlowLayout())
panel1.add(label_ip)
panel1.add(text_ip)
panel1.add(label_port)
panel1.add(text_port)
panel1.add(button_connect)
panel2.setLayout(new FlowLayout())
panel2.add(text_send)
panel2.add(button_send)
add(panel1,BorderLayout.NORTH)
add(text_area_show,BorderLayout.CENTER)
add(panel2,BorderLayout.SOUTH)
text_send.addKeyListener(this)
button_connect.addActionListener(this)
button_send.addActionListener(this)
addWindowListener(this)
this.setTitle("客户端")
setBounds(200,200,400,350)
setVisible(true)
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button_connect)
{
try
{
String ip = null,port = null
ip = text_ip.getText()
port = text_port.getText()
mysocket = new Socket(ip, Integer.parseInt(port))
in = new DataInputStream(mysocket.getInputStream())
out = new DataOutputStream(mysocket.getOutputStream())
}
catch (UnknownHostException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
mythread.start()
}
if(e.getSource() == button_send)
{
if(mysocket.isConnected() == true)
{
String temp = null
temp = text_send.getText()
try
{
out.writeUTF(temp)
text_send.setText(null)
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
}
}
}
public void run()
{
while(true)
{
String temp = null
try
{
temp = in.readUTF()
}
catch (IOException ex)
{
text_area_show.append("服务器退出\n")
return
}
temp += "\n"
text_area_show.append(temp)
}
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)
{
String temp = null
temp = text_send.getText()
try
{
out.writeUTF(temp)
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
}
}
public void windowClosing(WindowEvent e)
{
System.exit(0)
}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
}
public class mywindow
{
public static void main(String argv[])
{
myframe f = new myframe()
}
}
-----------客户端-----------
import java.net.*
import java.awt.*
import java.awt.event.*
import java.io.*
import java.util.logging.Level
import java.util.logging.Logger
import javax.swing.*
class SocketList
{
int length = 0
Socket socketlist[] = new Socket[10]
SocketList()
{
}
void add(Socket s)
{
if(length == 10)
{
return
}
socketlist[length] = s
length++
}
void Delete(Socket s)
{
int i = 0
for(i = 0i <lengthi++)
{
if(socketlist[i] == s)
{
break
}
}
for(int j = ij <lengthj++)
{
socketlist[j] = socketlist[j + 1]
}
length--
/*
for(int k = 0k <lengthk++)
{
if(socketlist[k].isBound() == true)
{
System.out.print("error")
}
}*/
}
}
class FrameThread extends Thread
{
myframe frame
FrameThread(myframe f)
{
frame = f
start()
}
public void run()
{
while(true)
{
InetAddress addr = null
Socket s = null
try
{
s = frame.server.accept()
addr = s.getInetAddress()
frame.socketlist.add(s)
for(int i = 0i <frame.socketlist.lengthi++)
{
if(frame.socketlist.socketlist[i] != s )
{
DataInputStream in = new DataInputStream(frame.socketlist.socketlist[i].getInputStream())
DataOutputStream out= new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream())
out.writeUTF(addr + "连接到服务器")
}
}
}
catch (IOException ex)
{
Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex)
}
frame.text_area_show.append(addr + "连接到服务器\n")
try
{
frame.list.add(InetAddress.getLocalHost().getHostAddress() + "-" + s.getPort())
}
catch (UnknownHostException ex)
{
Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex)
}
try
{
new ClientThread(s, frame)
}
catch (IOException ex)
{
Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex)
}
}
}
}
class ClientThread extends Thread
{
DataInputStream in = null
DataOutputStream out = null
Socket mysocket = new Socket()
myframe frame = null
InetAddress addr = null
ClientThread(Socket s,myframe f) throws IOException
{
mysocket = s
addr = mysocket.getLocalAddress()
frame = f
in = new DataInputStream(mysocket.getInputStream())
out = new DataOutputStream(mysocket.getOutputStream())
out.writeUTF("成功连接服务器")
start()
}
public void run()
{
while(true)
{
String temp = null
try
{
temp = in.readUTF()
for(int i = 0i <frame.socketlist.lengthi++)
{
DataInputStream in_temp = new DataInputStream(frame.socketlist.socketlist[i].getInputStream())
DataOutputStream out_temp = new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream())
out_temp.writeUTF(addr + "说: " + temp)
}
frame.text_area_show.append(addr + "说: " + temp + "\n")
}
catch (IOException ex)
{
frame.socketlist.Delete(mysocket)
frame.text_area_show.append(addr + "退出服务器\n")
for(int i = 0i <frame.socketlist.lengthi++)
{
try
{
DataInputStream in_temp = new DataInputStream(frame.socketlist.socketlist[i].getInputStream())
}
catch (IOException ex1)
{
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1)
}
DataOutputStream out_temp = null
try
{
out_temp = new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream())
}
catch (IOException ex1)
{
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1)
}
try
{
out_temp.writeUTF(addr + "退出服务器")
}
catch (IOException ex1)
{
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1)
}
}
return
}
}
}
}
class myframe extends JFrame implements ActionListener,WindowListener,KeyListener
{
List list = new List(16)
TextArea text_area_show = new TextArea(15,40)
TextField text_send = new TextField(50)
Button button_send = new Button("发送")
ServerSocket server = null
FrameThread thread
SocketList socketlist = new SocketList()
myframe() throws IOException
{
Panel panel1 = new Panel()
panel1.setLayout(new FlowLayout())
panel1.add(text_area_show)
panel1.add(list)
list.addActionListener(this)
Panel panel2 = new Panel()
panel2.setLayout(new FlowLayout())
panel2.add(text_send)
panel2.add(button_send)
setLayout(new FlowLayout())
add(panel1)
add(panel2)
text_send.addKeyListener(this)
button_send.addActionListener(this)
addWindowListener(this)
server = new ServerSocket(8888)
thread = new FrameThread(this)
setTitle("服务器")
setBounds(200,200,450,330)
setVisible(true)
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == list)
{
text_area_show.append(list.getSelectedItem() + "\n")
}
if(e.getSource() == button_send)
{
for(int i = 0i <socketlist.lengthi++)
{
try
{
DataInputStream in = new DataInputStream(socketlist.socketlist[i].getInputStream())
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
DataOutputStream out = null
try
{
out = new DataOutputStream(socketlist.socketlist[i].getOutputStream())
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
try
{
out.writeUTF(text_send.getText())
text_send.setText(null)
//text_area_show.append(text_send.getText() + "\n")
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
}
}
}
public void windowClosing(WindowEvent e)
{
System.exit(0)
}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)
{
for(int i = 0i <socketlist.lengthi++)
{
try
{
DataInputStream in = new DataInputStream(socketlist.socketlist[i].getInputStream())
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
DataOutputStream out = null
try
{
out = new DataOutputStream(socketlist.socketlist[i].getOutputStream())
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
try
{
out.writeUTF(text_send.getText())
text_area_show.append(text_send.getText() + "\n")
}
catch (IOException ex)
{
Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex)
}
}
}
}
public void keyReleased(KeyEvent e) {}
}
public class mywindow
{
public static void main(String argv[]) throws IOException
{
myframe f = new myframe()
}
}
Server.java
import java.io.DataInputStream
import java.io.DataOutputStream
import java.io.IOException
import java.net.ServerSocket
import java.net.Socket
import java.util.ArrayList
import java.util.List
public class Server {
private List<ServerThread> serverThreads
private ServerSocket serverSocket
public Server() throws IOException {
serverSocket = new ServerSocket(8025)
serverThreads = new ArrayList<ServerThread>()
}
public List<ServerThread> getServerThreads() {
return serverThreads
}
public void setServerThreads(List<ServerThread> serverThreads) {
this.serverThreads = serverThreads
}
public ServerSocket getServerSocket() {
return serverSocket
}
public void setServerSocket(ServerSocket serverSocket) {
this.serverSocket = serverSocket
}
public static void main(String[] args) {
Server server = null
try {
server = new Server()
} catch (IOException e) {
e.printStackTrace()
System.exit(-1)
}
try {
Socket socket
Thread t
while (true) {
socket = server.getServerSocket().accept()
ServerThread serverThread = new ServerThread(server, socket)
server.getServerThreads().add(serverThread)
t = new Thread(serverThread)
t.start()
}
} catch (IOException e) {
e.printStackTrace()
}
}
public void sendMessage(String message, Socket socket) {
for (ServerThread serverThread : serverThreads) {
try {
serverThread.getDos().writeUTF(message)
} catch (IOException e) {
// e.printStackTrace()
System.out.println("推送消息给" + serverThread.getSocket().getRemoteSocketAddress() + "过程中发生了错误.")
}
}
}
}
class ServerThread implements Runnable {
private Server server
private Socket socket
private DataInputStream dis
private DataOutputStream dos
public ServerThread(Server server, Socket socket) throws IOException {
this.server = server
this.socket = socket
dis = new DataInputStream(socket.getInputStream())
dos = new DataOutputStream(socket.getOutputStream())
}
public Server getServer() {
return server
}
public void setServer(Server server) {
this.server = server
}
public Socket getSocket() {
return socket
}
public void setSocket(Socket socket) {
this.socket = socket
}
public DataInputStream getDis() {
return dis
}
public void setDis(DataInputStream dis) {
this.dis = dis
}
public DataOutputStream getDos() {
return dos
}
public void setDos(DataOutputStream dos) {
this.dos = dos
}
public void run() {
String message = ""
while (!message.equals("logout")) {
try {
message = socket.getRemoteSocketAddress() + " say: " + dis.readUTF()
// System.out.println(message)
server.sendMessage(message, socket)
} catch (IOException e) {
//e.printStackTrace()
break
}
}
server.getServerThreads().remove(this)
try {
dis.close()
dos.close()
socket.close()
} catch (IOException e) {
e.printStackTrace()
}
}
}
Client.java
import java.io.DataInputStream
import java.io.DataOutputStream
import java.io.IOException
import java.net.Socket
import java.net.UnknownHostException
import java.util.Scanner
public class Client {
private Socket socket
private DataOutputStream dos
private DataInputStream dis
public Client() throws UnknownHostException, IOException {
socket = new Socket("127.0.0.1", 8025)
dis = new DataInputStream(socket.getInputStream())
dos = new DataOutputStream(socket.getOutputStream())
new Thread(new ClientThread(this)).start()
}
public Socket getSocket() {
return socket
}
public void setSocket(Socket socket) {
this.socket = socket
}
public DataOutputStream getDos() {
return dos
}
public void setDos(DataOutputStream dos) {
this.dos = dos
}
public DataInputStream getDis() {
return dis
}
public void setDis(DataInputStream dis) {
this.dis = dis
}
public void close() {
try {
dis.close()
dos.close()
socket.close()
} catch (IOException e) {
e.printStackTrace()
}
}
private void sendMessage(String message) {
try {
dos.writeUTF(message)
} catch (IOException e) {
e.printStackTrace()
}
}
public static void main(String[] args) {
Client client = null
try {
client = new Client()
System.out.println(client.getSocket().getLocalPort())
} catch (IOException e) {
System.out.println("BUG")
e.printStackTrace()
System.exit(-1)
}
String message = ""
Scanner scanner = new Scanner(System.in)
while (!message.equals("logout")) {
message = scanner.nextLine()
// System.out.println(message)
client.sendMessage(message)
}
scanner.close()
client.close()
}
}
class ClientThread implements Runnable {
private Client client
public ClientThread(Client client) {
super()
this.client = client
}
@Override
public void run() {
try {
while (true) {
System.out.println(client.getDis().readUTF())
}
} catch (IOException e) {
e.printStackTrace()
}
}
}