1.main方法:
package peixun;
public class MyServerSocket {
public static void main(String[] args) {
new ServerListener().start();
}
}
2.建立連接
package peixun;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;
public class ServerListener extends Thread {
@Override
public void run() {
try {
//()內(nèi)寫的是監(jiān)聽的端口,可以是1-65535
ServerSocket serverSocket = new ServerSocket(12345);
while (true) {
//偵聽客戶端的連接,會(huì)阻塞當(dāng)前的線程
Socket socket = serverSocket.accept();//此時(shí)已經(jīng)監(jiān)聽12345這個(gè)端口了
//建立連接
JOptionPane.showMessageDialog(null, "有客戶端鏈接到了本機(jī)的12345端口");
//因?yàn)橐c多個(gè)客戶端交互幽崩,所以要將socket傳遞給新的線程柜蜈,接下來就是創(chuàng)建與socket通信的線程
new ChatSocket(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.進(jìn)行socket通信
package peixun;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
public class ChatSocket extends Thread {
Socket socket;
public ChatSocket(Socket s) {
this.socket = s;
}
public void out(String out) {
try {
socket.getOutputStream().write(out.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
int count = 0;
while (true) {
count++;
out("loop"+count);
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}