socket案例一
編寫一個網絡應用程序,有客戶端與服務器端;當客戶端向服務器端發送請求時,客戶端輸出服務器端返回的字符串。
???????
??????????? ????????
回顧下socket的開發步驟:
1) 建立Socket連接
2) 獲得輸入/輸出流
3)讀/寫數據
4) 關閉輸入/輸出流
5) 關閉Socket
????????????
???????????????
服務器端
package com.hrtx.test;import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服務器端:響應請求
*
* Unrecognized Windows Sockets error: 0: JVM_Bind-->端口被占用導致異常出現
* * 殺死占用某端口的進程
* windows * 1、netstat -nao //列出所有進程以及其占用的端口
* 2、taskkill -PID 進程號 -F //強制關閉某個進程
*
* @author jiqinlin
*
*/
public class ServerTest {
public static void main(String args[]) throws Exception {
ServerSocket ss = new ServerSocket(8888);
// 說明服務器成功啟動,正在等待客戶端連接
System.out.println("Listening...");
while (true) {
Socket socket = ss.accept();
// 說明有客戶端請求連接
System.out.println("Client Connected...");
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("我是服務器端數據");
out.close();
socket.close();
}
}
}
* linux:
* 1、netstat -naop
* 2、kill 進程號 -f
*
運行main方法時控制臺會輸出“Listening...”,表示服務器成功啟動,正在等待客戶端連接
???????? ???????????
客戶端
package com.hrtx.test;import java.io.DataInputStream;
import java.net.Socket;
/**
* 客戶端:發送請求
*
* @author jiqinlin
*
*/
public class ClientTest {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("192.168.2.105", 8888);
DataInputStream in = new DataInputStream(socket.getInputStream());
// 讀取服務端發來的消息
String msg = in.readUTF();
System.out.println(msg);
}
} 運行main方法時控制臺會輸出“我是服務器端數據”,此字符串是從服務器返回的
總結
- 上一篇: nginx 反向代理+ip智能解析
- 下一篇: 【转载】DataKeyNames,Dat