javaSocket编程TCP
生活随笔
收集整理的這篇文章主要介紹了
javaSocket编程TCP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
主題為:javaSocket編程TCP
原地址:http://www.iteye.com/topic/630748
?
- 關于JAVA線程的數據轉發(游戲項目中間層)
- java多線程控制臺聊天室
- java Socket通信的學習筆記三
推薦群組: D語言
更多相關推薦 Java綜合寫了一個javaSocket通信的例子,比較容易懂,主要是TCP協議的。下面是服務端的代碼
Java代碼 - import java.io.IOException;
- import java.net.InetAddress;
- import java.net.Socket;
- public class ServerSocket {
- public static void main(String[] args) {
- beginSocket();
- }
- public static void beginSocket(){
- try {
- java.net.ServerSocket serverSocket=new java.net.ServerSocket(3456);
- InetAddress inta=serverSocket.getInetAddress().getLocalHost();
- System.out.println(inta.getHostAddress());
- while(true){
- Socket socket=serverSocket.accept();
- new HelloMessage(socket);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- } import java.io.IOException; import java.net.InetAddress; import java.net.Socket;public class ServerSocket {public static void main(String[] args) {beginSocket();}public static void beginSocket(){try {java.net.ServerSocket serverSocket=new java.net.ServerSocket(3456);InetAddress inta=serverSocket.getInetAddress().getLocalHost();System.out.println(inta.getHostAddress());while(true){Socket socket=serverSocket.accept();new HelloMessage(socket);}} catch (IOException e) {e.printStackTrace();}} }
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.Socket;
- public class HelloMessage extends Thread {
- private Socket socket_ = null;
- public HelloMessage(Socket socket) {
- this.socket_ = socket;
- this.start();
- }
- public void run() {
- try {
- BufferedReader bReader = new BufferedReader(new InputStreamReader(
- this.socket_.getInputStream()));
- PrintWriter pWriter = new PrintWriter(this.socket_
- .getOutputStream());
- String requestStr = bReader.readLine();
- if (requestStr != null && !"".equals(requestStr)) {
- if (requestStr.equals("java")) {
- pWriter.println("your write is java");
- }
- if (requestStr.equals(".net")) {
- pWriter.println("your write is .net");
- }
- if (requestStr.equals("php")) {
- pWriter.println("your write is php");
- }
- if (requestStr.equals("end")) {
- pWriter.println("your write is end");
- }else{
- pWriter.println("your write is other");
- }
- }else{
- pWriter.println("your write is null");
- }
- pWriter.flush();
- pWriter.close();
- bReader.close();
- this.socket_.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- } import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket;public class HelloMessage extends Thread {private Socket socket_ = null;public HelloMessage(Socket socket) {this.socket_ = socket;this.start();}public void run() {try {BufferedReader bReader = new BufferedReader(new InputStreamReader(this.socket_.getInputStream()));PrintWriter pWriter = new PrintWriter(this.socket_.getOutputStream());String requestStr = bReader.readLine();if (requestStr != null && !"".equals(requestStr)) {if (requestStr.equals("java")) {pWriter.println("your write is java");}if (requestStr.equals(".net")) {pWriter.println("your write is .net");}if (requestStr.equals("php")) {pWriter.println("your write is php");}if (requestStr.equals("end")) {pWriter.println("your write is end");}else{pWriter.println("your write is other");}}else{pWriter.println("your write is null");}pWriter.flush();pWriter.close();bReader.close();this.socket_.close();} catch (Exception e) {e.printStackTrace();}} }
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.Socket;
- import java.net.UnknownHostException;
- public class ClientSocket {
- public static void main(String[] args) {
- clientRequest();
- }
- private static void clientRequest() {
- try {
- while (true) {
- Socket clientSocket = new Socket("172.168.4.105", 3456);
- BufferedReader bReader = new BufferedReader(new InputStreamReader(
- System.in));
- System.out.println("please input java or .net or php or end");
- String strLine = bReader.readLine();
- if (strLine != null && !"".equals(strLine)) {
- PrintWriter pWriter = new PrintWriter(clientSocket
- .getOutputStream(), true);
- pWriter.println(strLine);
- BufferedReader br = new BufferedReader(
- new InputStreamReader(clientSocket.getInputStream()));
- String strResult = br.readLine();
- System.out.println(strResult);
- pWriter.flush();
- pWriter.close();
- clientSocket.close();
- }
- }
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- } import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException;public class ClientSocket {public static void main(String[] args) {clientRequest();}private static void clientRequest() {try {while (true) {Socket clientSocket = new Socket("172.168.4.105", 3456);BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));System.out.println("please input java or .net or php or end");String strLine = bReader.readLine();if (strLine != null && !"".equals(strLine)) {PrintWriter pWriter = new PrintWriter(clientSocket.getOutputStream(), true);pWriter.println(strLine);BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));String strResult = br.readLine();System.out.println(strResult);pWriter.flush();pWriter.close();clientSocket.close();}}} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }
為了提高并發時的處理效率,對于每個請求,系統都新建一個線程處理。
Java代碼然后是客戶端的代碼。
Java代碼這樣一個簡單的TCP,Socket編程的原型就成了。簡單介紹下:
幾個比較重要的API
.Accept方法用于產生"阻塞",直到接受到一個連接,并且返回一個客戶端的Socket對象實例。
.getInputStream方法獲得網絡連接輸入,同時返回一個IutputStream對象實例,。
.getOutputStream方法連接的另一端將得到輸入,同時返回一個OutputStream對象實例。
總結
以上是生活随笔為你收集整理的javaSocket编程TCP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 串口数据字节位的理解
- 下一篇: mac 删除垃圾篓中的文件