1
package com.wanju.chat.swingui;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器端
*
* @author Jet
*
*/
public class SocketManager {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) {
SocketManager manager = new SocketManager();
manager.doListen();
}
public void doListen() {
ServerSocket server;
try {
server = new ServerSocket(9000);
System.out.println("server start up");
while (true) {
Socket client = server.accept();
System.out.println("server receive request");
new Thread(new SSocket(client)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
// 服务器进程
class SSocket implements Runnable {
Socket client;
public SSocket(Socket client) {
this.client = client;
}
public void run() {
try {
// getInputStream
// getOutputStream
BufferedReader reader = new BufferedReader(
new InputStreamReader(client.getInputStream()));
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(client.getOutputStream()));
String listMsg = reader.readLine();
// "\r"不可省略!
writer.write(listMsg + "\r\n");
writer.flush();
System.out.println("Receive:" + listMsg);
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2
package com.wanju.chat.swingui;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* 客户端界面+socket
*
* @author Jet
*
*/
public class SocketClient extends JPanel implements ActionListener {
private JFrame frame;
private JPanel bgPanel;
private JLabel ipLabel;
private JLabel portLabel;
private JTextField ipField;
private JTextField portField;
private JLabel sendLabel;
private JLabel receiveLabel;
private JTextField sendContent;
private JTextField receiveContent;
private JButton sendButton;
private JButton terminateButton;
private String sendMsg = "";
private String receiveMsg = "";
private String ip = "";
private int port = 9000;
public SocketClient() {
frame = new JFrame("Socket调试窗口");
bgPanel = new JPanel();
bgPanel.setLayout(new GridLayout(5, 2));
ipLabel = new JLabel("IP:");
portLabel = new JLabel("PORT:");
ipField = new JTextField();
portField = new JTextField();
sendLabel = new JLabel("SendMsg:");
receiveLabel = new JLabel("ReceiveMsg:");
sendContent = new JTextField();
receiveContent = new JTextField();
sendContent.setText(sendMsg);
receiveContent.setText(receiveMsg);
sendButton = new JButton("SEND");
terminateButton = new JButton("TERMINATE");
sendButton.addActionListener(this);
terminateButton.addActionListener(this);
bgPanel.add(ipLabel);
bgPanel.add(ipField);
bgPanel.add(portLabel);
bgPanel.add(portField);
bgPanel.add(sendLabel);
bgPanel.add(sendContent);
bgPanel.add(receiveLabel);
bgPanel.add(receiveContent);
bgPanel.add(sendButton);
bgPanel.add(terminateButton);
frame.getContentPane().add(bgPanel);
frame.pack();
frame.setVisible(true);
frame.setSize(500, 500);
frame.setLocation(400, 120);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == sendButton) {
ip = ipField.getText();
port = Integer.parseInt(portField.getText());
sendMsg = sendContent.getText();
System.out.println("send:" + sendMsg);
client2server();
} else if (e.getSource() == terminateButton) {
System.out.println("terminate");
// 从简,直接终止程序
System.exit(0);
}
}
public static void main(String[] args) {
SocketClient sc = new SocketClient();
}
public void client2server() {
Socket socket = null;
try {
System.out.println(ip);
socket = new Socket(ip, port);
System.out.println("client start up");
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
BufferedWriter doc = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
// "\r"不可省略!
doc.write(sendMsg + "\r");
doc.flush();
String res = in.readLine();
System.out.println(res);
receiveMsg = res;
receiveContent.setText(receiveMsg);
doc.close();
in.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
}
}
}
}
}
3