可以參考一下這段代碼 //1. 構(gòu)造ServerSocket實(shí)例,指定服務(wù)端口。ServerSocket servSock = new ServerSocket(servPort); while(true){ // 2.調(diào)用accept方法,建立和客戶端的連接 Socket clntSock = servSock.accept(); SocketAddress clientAddress = clntSock.getRemoteSocketAddress(); System.out.println("Handling client at " + clientAddress); // 3. 獲取連接的InputStream,OutputStream來進(jìn)行數(shù)據(jù)讀寫 InputStream in = clntSock.getInputStream(); OutputStream out = clntSock.getOutputStream(); while((recvMsgSize = in.read(receiveBuf)) != -1) { out.write(receiveBuf, 0, recvMsgSize); } // 4.操作結(jié)束,關(guān)閉socket. clntSock.close();}

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供黔西網(wǎng)站建設(shè)、黔西做網(wǎng)站、黔西網(wǎng)站設(shè)計(jì)、黔西網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、黔西企業(yè)網(wǎng)站模板建站服務(wù),十年黔西做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
有兩個(gè)類,服務(wù)器和客戶端、
服務(wù)器類代碼:
package chat;
import java.io.*;
import java.net.*;
import java.util.*;
/*服務(wù)器類*/
public class Server {
public ListSocket socketList = new ArrayListSocket();//存放所有連接的客戶端的集合
public ServerSocket server;//服務(wù)器
public int portNum;//端口號(hào)
public Server(int portNum){
this.portNum = portNum;
}
public void innit(){
try {
server = new ServerSocket(portNum);
System.out.println("服務(wù)器開啟成功!");
int socketNum = 0;
while(true){
Socket socket = server.accept();//被動(dòng)等待客戶端的連接
socketNum++;
System.out.println("第"+socketNum+"個(gè)客戶端連接成功!!");
socketList.add(socket);//連接的客戶端存放到集合里面
new RWThread(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
class RWThread extends Thread{//接收和發(fā)送消息的線程
public Socket socket;
public RWThread(Socket socket){
this.socket = socket;
}
public void run() {
super.run();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String message = br.readLine();
System.out.println(message);//接收客戶端發(fā)來的消息
for(int i=0;isocketList.size();i++){//發(fā)送給所有連接的客戶端
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socketList.get(i).getOutputStream()));
pw.println(message);
pw.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
int portNum = 8888;//創(chuàng)建服務(wù)器的端口號(hào)
Server server = new Server(portNum);
server.innit();
}
}
客戶端類:
package chat;
import java.io.*;
import java.net.*;
import java.util.*;
/*客戶端類*/
public class Client {
public Socket socket;
public Client(){
Scanner sca = new Scanner(System.in);
try {
socket = new Socket("127.0.0.1",8888);//創(chuàng)建客戶端
new ReadThread(socket).start();//開啟讀取從服務(wù)器端發(fā)來的信息
while(true){
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
String message = sca.nextLine();
pw.println(message);//向服務(wù)器發(fā)送信息
pw.flush();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
System.out.println("錯(cuò)誤:服務(wù)器未開啟!!!");
}
}
class ReadThread extends Thread{//讀取服務(wù)器發(fā)來信息的線程
public Socket socket;
public ReadThread(Socket socket){
this.socket = socket;
}
public void run() {
super.run();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String message = br.readLine();
System.out.println(message);//輸出信息
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Client client = new Client();
}
}
現(xiàn)打開服務(wù)器類,然后可以打開多個(gè)客戶端進(jìn)行聊天
客戶端再起一個(gè)線程來負(fù)責(zé)等待不就行了,多線程處理。還有服務(wù)端想高效處理客戶端消息,建議用NIO機(jī)制來處理,否則客戶端很快,服務(wù)端不能很快處理,也沒意義
當(dāng)前名稱:java套接字抓包代碼 java抓包工具源碼
鏈接地址:http://chinadenli.net/article48/hijjep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、網(wǎng)站改版、虛擬主機(jī)、企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)