java socket例子
轉自:http://liudaoru.iteye.com/blog/281287
今天看了一下socket,覺得這篇文字不錯。轉過來,以後學習一下。
服務端程式碼:
public class Server {
public static void main(String args[]) throws IOException {
//為了簡單起見,所有的異常資訊都往外拋
int port = 8899;
//定義一個ServerSocket監聽在埠8899上
ServerSocket server = new ServerSocket(port);
while (true) {
//server嘗試接收其他Socket的連線請求,server的accept方法是阻塞式的
Socket socket = server.accept();
//每接收到一個Socket就建立一個新的執行緒來處理它
new Thread(new Task(socket)).start();
}
}
/**
* 用來處理Socket請求的
*/
static class Task implements Runnable {
private Socket socket;
public Task(Socket socket) {
this.socket = socket;
}
public void run() {
try {
handleSocket();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 跟客戶端Socket進行通訊
* @throws Exception
*/
private void handleSocket() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GBK"));
StringBuilder sb = new StringBuilder();
String temp;
int index;
while ((temp=br.readLine()) != null) {
System.out.println(temp);
if ((index = temp.indexOf("eof")) != -1) {//遇到eof時就結束接收
sb.append(temp.substring(0, index));
break;
}
sb.append(temp);
}
System.out.println("客戶端: " + sb);
//讀完後寫一句
Writer writer = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");
writer.write("你好,客戶端。");
writer.write("eof\n");
writer.flush();
writer.close();
br.close();
socket.close();
}
}
}
客戶端程式碼:
public class Client {
public static void main(String args[]) throws Exception {
//為了簡單起見,所有的異常都直接往外拋
String host = "127.0.0.1"; //要連線的服務端IP地址
int port = 8899; //要連線的服務端對應的監聽埠
//與服務端建立連線
Socket client = new Socket(host, port);
//建立連線後就可以往服務端寫資料了
Writer writer = new OutputStreamWriter(client.getOutputStream(), "GBK");
writer.write("你好,服務端。");
writer.write("eof\n");
writer.flush();
//寫完以後進行讀操作
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8"));
//設定超時間為10秒
client.setSoTimeout(10*1000);
StringBuffer sb = new StringBuffer();
String temp;
int index;
try {
while ((temp=br.readLine()) != null) {
if ((index = temp.indexOf("eof")) != -1) {
sb.append(temp.substring(0, index));
break;
}
sb.append(temp);
}
} catch (SocketTimeoutException e) {
System.out.println("資料讀取超時。");
}
System.out.println("服務端: " + sb);
writer.close();
br.close();
client.close();
}
}
相關文章
- Java SocketJava
- java Socket UdpJavaUDP
- Java Socket 之 NIOJava
- java Socket Udp聊天JavaUDP
- java反射小例子Java反射
- Java Socket程式設計Java程式設計
- Java Socket程式設計Java程式設計
- Java String length()例子Java
- Java Socket 程式設計指南Java程式設計
- Java NIO4:Socket通道Java
- java sound與socket問題!Java
- Java必知必會之socketJava
- Java socket 獲取gps定位Java
- Zookeeper入門-Java版本HelloWorld例子Java
- Java基礎(Socket通訊和NIO)Java
- Java Socket 程式設計原理及教程Java程式設計
- java Socket 獲取本地主機ipJava
- Java Socket圖片檔案傳輸Java
- java的socket程式設計問題Java程式設計
- C#高效能大容量SOCKET併發(一):IOCP完成埠例子介紹C#
- java操作 mongo DB 資料庫例子JavaGo資料庫
- 詳解Java Socket的工作機制Java
- Java 網路程式設計 —— Socket 詳解Java程式設計
- Java的Socket通訊簡單例項Java單例
- 讀懂Java中的Socket程式設計Java程式設計
- java Socket接收資料亂碼問題Java
- 介紹Java Socket程式設計的文章Java程式設計
- Java--Socket通訊(雙向,有介面)Java
- [Java]一個DeadLock(死鎖)的例子Java
- Java多執行緒下載的例子。Java執行緒
- golang關鍵字select的三個例子, time.After模擬socket/心跳超時Golang
- java的nio之:java的bio流下實現的socket伺服器同步阻塞模型和socket的偽非同步的socket伺服器的通訊模型Java伺服器模型非同步
- Java IO學習筆記四:Socket基礎Java筆記
- Java 和 Python 之間的 Socket 通訊JavaPython
- Java關閉Socket來終止執行緒Java執行緒
- java.lang.Exception: Socket bind failed: [730048]JavaExceptionAI
- Java Tcp協議socket程式設計學習JavaTCP協議程式設計
- 基於socket用java實現telnet功能Java