实现两个客户端通信通过服务器转发不要图形界面不用连接数据库 求源码
可以找本java的书照着代码敲敲看
Android Socket 编程(WIFI 和 ADB)
这里提供了服务器端的源代码,客户端可在网上查找一下。
这个问题问得好,不太好回答
网上马士兵的javase自己下载
网上马士兵的javase自己下载
这个简单,实例代码,服务器端:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatTTCPServer {
public ChatTTCPServer(int port, String name) throws IOException {
ServerSocket server = new ServerSocket(port);
Socket client = server.accept();
if(client!=null){
new ChatTTCPSocketJFrame(name, client);
System.out.println("收到消息。。。");
server.close();
}
}
public static void main(String[] args) throws IOException {
new ChatTTCPServer(9999, "Jack");
}
}
客户端:
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
public class ChatTTCPSocketJFrame extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private JTextArea text_receiver;
private JTextField text_sender;
private PrintWriter cout;
private JButton buttons[];
public ChatTTCPSocketJFrame(String name, Socket socket) throws HeadlessException, IOException {
super("聊天室" + name + "" + InetAddress.getLocalHost() + ":" + socket.getPort());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.text_receiver = new JTextArea();
this.text_receiver.setEditable(false);
this.getContentPane().add(new JScrollPane(this.text_receiver));
JToolBar toolBar = new JToolBar();
this.getContentPane().add(toolBar, "South");
toolBar.add(this.text_sender = new JTextField(30));
String[] buttonstr = { "发送", "离线" };
buttons = new JButton[buttonstr.length];
for (int i = 0; i < buttonstr.length; i++) {
toolBar.add(buttons[i] = new JButton(buttonstr[i]));
buttons[i].addActionListener(this);
}
this.setSize(400, 400);
this.setVisible(true);
this.name = name;
this.cout = new PrintWriter(socket.getOutputStream(), true);
this.cout.println(name);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = "连接" + br.readLine() + "成功";
while (line != null && !line.endsWith("bye"))
{
text_receiver.append(line + "\r\n");
line = br.readLine();
}
br.close();
this.cout.close();
//发送完数据
socket.close();
buttons[0].setEnabled(false);
buttons[1].setEnabled(false);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("发送"))
{
this.cout.println(name + "说" + text_sender.getText());
text_receiver.append("我说: " + text_sender.getText() + "\n");
text_sender.setText("");
}
if (e.getActionCommand().equals("离线")) {
text_receiver.append("离线");
this.cout.println(name + "离线\n" + "bye\n");
buttons[0].setEnabled(false);
buttons[1].setEnabled(false);
}
}
public static void main(String[] args) throws IOException {
new ChatTTCPSocketJFrame("Mike", "localhost", 9999);
}
public ChatTTCPSocketJFrame(String name, String host, int port) throws IOException {
this(name, new Socket(host, port));
}
}