一個簡單的socket DEMO
socket是一種比較流行的網絡編程方式,由於工作中用到了局域網通信,簡單瞭解了一下socket通信的實現過程。
既然是通信,則至少存在兩個進程,而且必須包括一個建立服務的進程,即建立socket服務端;這個服務端規定了服務的端口,以供所有的客戶端連接。可以把socket比作聽一場講座:場地工作人員相當於服務端,觀衆相當於客戶端,場地工作人員規定觀衆只能從東南口進入(服務端規定所有的socket通信只能通過60000端口),觀衆從東南口進來後即可看見演講人,可以與其進行交流(客戶端通過60000端口鏈接服務端,實現交互通信)。大致就是這個流程。話不多說,上代碼。
服務端:
建立服務:EchoS.java
public class EchoS {
private ServerSocket serverSocket;
public EchoS(){
try {
serverSocket= new ServerSocket(60000);
} catch (IOException e) {
e.printStackTrace();
}
}
public void Server(){
try {
Socket socket = serverSocket.accept();
System.out.println("client:" + socket.getInetAddress() + ":" +
socket.getLocalPort());
BufferedReader br = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter pw = new
PrintWriter(socket.getOutputStream(), true);
String linestr;
while ((linestr = br.readLine()) != null) {
System.out.println(linestr);
pw.println("--->" +
linestr);
}
} catch (IOException e) {
System.out.println("連接斷開:(");
e.printStackTrace();
}
}
}
啓動服務:SocketServer.java
public class SocketServer {
public static void main(String[] args)
{
new
EchoS().Server();
}
}
客戶端:
配置連接屬性:EchoC.java
public class EchoC {
private Socket socket;
public EchoC(){
try {
socket = new Socket("localhost",60000);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void Client(){
try {
BufferedReader br = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter pw = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader lbr = new BufferedReader(new
InputStreamReader(System.in));
String
linestr = null;
while
((linestr = lbr.readLine()) != null) {
pw.println(linestr);
System.out.println(br.readLine());
if (linestr.equals("bye#")) {
break;
}
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
啓動連接:SocketClient.java
public class SocketClient {
public static void main(String[] args) {
new
EchoC().Client();
}
}
分別啓動服務和連接後,測試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.