Java實現(xiàn)簡單的socket通信教程
今天學(xué)習(xí)了一下java如何實現(xiàn)socket通信,感覺難點反而是在io上,因為java對socket封裝已經(jīng)很完善了。
今天代碼花了整個晚上調(diào)試,主要原因是io的flush問題和命令行下如何運行具有package的類,不過最后問題基本都解決了,把代碼貼出來供大家參考
server
public class TcpServer { public static void main(String[] args) throws Exception { ServerSocket server = new ServerSocket(9091); try { Socket client = server.accept(); try { BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream())); boolean flag = true; int count = 1; while (flag) { System.out.println(客戶端要開始發(fā)騷了,這是第 + count + 次!); count++; String line = input.readLine(); System.out.println(客戶端說: + line); if (line.equals(exit)) { flag = false; System.out.println(客戶端不想玩了!); } else { System.out.println(客戶端說: + line); } } } finally { client.close(); } } finally { server.close(); } }}
client
public class TcpClient { public static void main(String[] args) throws Exception { Socket client = new Socket(127.0.0.1, 9091); try { PrintWriter output = new PrintWriter(client.getOutputStream(), true); Scanner cin = new Scanner(System.in); String words; while (cin.hasNext()) { words = cin.nextLine(); output.println(words); System.out.println(寫出了數(shù)據(jù): + words); } cin.close(); } finally { client.close(); } }}
補充知識:Java-Socket通信 同時JSON傳遞與解析
服務(wù)端
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;import net.sf.json.JSONObject;public class Server_2 { public static void main(String[] args) { Scanner in=new Scanner(System.in); InputStreamReader isr; BufferedReader br; OutputStreamWriter osw; BufferedWriter rw; try { ServerSocket serverSocket=new ServerSocket(4444); Socket socket=serverSocket.accept(); isr=new InputStreamReader(socket.getInputStream()); br=new BufferedReader(isr); String str=br.readLine(); JSONObject object=JSONObject.fromObject(str); System.out.println('ID:'+object.getInt('ID')); System.out.println('Name:'+object.getString('name')); System.out.println('password:'+object.getString('password')); br.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } }}
客服端
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import java.util.Scanner;import net.sf.json.JSONObject;public class Client_2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); InputStreamReader isr; BufferedReader br; OutputStreamWriter osw; BufferedWriter rw; try { Socket socket = new Socket('localhost', 4444); osw = new OutputStreamWriter(socket.getOutputStream()); rw = new BufferedWriter(osw); User user = new User(); System.out.println('Id:'); user.setID(in.nextInt()); in.nextLine(); System.out.println('Name:'); user.setName(in.nextLine()); System.out.println('Password:'); user.setPassword(in.nextLine()); JSONObject jsonObject = JSONObject.fromObject(user); rw.write(jsonObject.toString()+'n'); rw.close(); socket.close(); } catch (Exception e) { // TODO: handle exception } }}
User
public class User { int ID; String name; String password; public int getID() { return ID; } public void setID(int iD) { ID = iD; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
以上這篇Java實現(xiàn)簡單的socket通信教程就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Docker究竟是什么 為什么這么流行 它的優(yōu)點和缺陷有哪些?2. ASP.NET MVC實現(xiàn)城市或車型三級聯(lián)動3. Python使用Pyqt5實現(xiàn)簡易瀏覽器(最新版本測試過)4. Element ui tree(樹)實現(xiàn)父節(jié)點選中時子節(jié)點不選中父節(jié)點取消時子節(jié)點自動取消功能5. 如何在.net6webapi中使用自動依賴注入6. 用python登錄帶弱圖片驗證碼的網(wǎng)站7. 如何使用瀏覽器擴展篡改網(wǎng)頁中的JS 文件8. .NET 6實現(xiàn)滑動驗證碼的示例詳解9. python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解10. java實現(xiàn)彈球小游戲
