1. 程式人生 > >實現socket通訊的簡單demo

實現socket通訊的簡單demo


//伺服器類
public class Server {
public static void main(String[] args) {
        try {
            //1.建立一個伺服器端Socket,即ServerSocket,指定繫結的埠,並監聽此埠
            ServerSocket serverSocket=new ServerSocket(8888);
            Socket socket=null;
            //記錄客戶端的數量
            int count=0;
            System.out.println("***伺服器即將啟動,等待客戶端的連線***");
            //迴圈監聽等待客戶端的連線
            while(true){
                //呼叫accept()方法開始監聽,等待客戶端的連線
                socket=serverSocket.accept();
                //建立一個新的執行緒
                ServerThread serverThread=new ServerThread(socket);
                //啟動執行緒
                serverThread.start();


                count++;//統計客戶端的數量
                System.out.println("客戶端的數量:"+count);
                InetAddress address=socket.getInetAddress();
                System.out.println("當前客戶端的IP:"+address.getHostAddress());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

public class ServerThread extends Thread{

// 和本執行緒相關的Socket

    Socket socket = null;


    public ServerThread(Socket socket) {
        this.socket = socket;
    }


    //執行緒執行的操作,響應客戶端的請求
    public void run(){
        InputStream is=null;
        InputStreamReader isr=null;
        BufferedReader br=null;
        OutputStream os=null;
        PrintWriter pw=null;
        try {
            //獲取輸入流,並讀取客戶端資訊
            is = socket.getInputStream();
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
            String info=null;
            while((info=br.readLine())!=null){//迴圈讀取客戶端的資訊
                System.out.println("我是伺服器,客戶端說:"+info);
            }
            socket.shutdownInput();//關閉輸入流
            //獲取輸出流,響應客戶端的請求
            os = socket.getOutputStream();
            pw = new PrintWriter(os);
            pw.write("歡迎您!");
            pw.flush();//呼叫flush()方法將緩衝輸出
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //關閉資源
            try {
                if(pw!=null)
                    pw.close();
                if(os!=null)
                    os.close();
                if(br!=null)
                    br.close();
                if(isr!=null)
                    isr.close();
                if(is!=null)
                    is.close();
                if(socket!=null)
                    socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

//客戶端類

public class Client {


 public static void main(String[] args) {
       try {
           //1.建立客戶端Socket,指定伺服器地址和埠
           Socket socket=new Socket("192.168.72.152", 8888);
           //2.獲取輸出流,向伺服器端傳送資訊
           OutputStream os=socket.getOutputStream();//位元組輸出流
           PrintWriter pw=new PrintWriter(os);//將輸出流包裝為列印流
           pw.write("使用者名稱:whf;密碼:789");
           pw.flush();
           socket.shutdownOutput();//關閉輸出流
           //3.獲取輸入流,並讀取伺服器端的響應資訊
           InputStream is=socket.getInputStream();
           BufferedReader br=new BufferedReader(new InputStreamReader(is));
           String info=null;
           while((info=br.readLine())!=null){
               System.out.println("我是客戶端,伺服器說:"+info);
           }
           //4.關閉資源
           br.close();
           is.close();
           pw.close();
           os.close();
           socket.close();
       } catch (UnknownHostException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}

直接用java application啟動即可

相關推薦

實現socket通訊簡單demo

//伺服器類 public class Server {public static void main(String[] args) {         try {             //1.建立一個伺服器端Socket,即ServerSocket,指定繫結的埠,並

TCP和UDP並實現socket簡單通訊

http://www.cnblogs.com/IPrograming/archive/2012/10/15/CSharp_Socket_4.html http://www.cnblogs.com/dolphinX/p/3460545.html 一、TCP和UDP的區別和聯絡 1.五層協議

Android簡單實現Socket通訊,客戶端連線伺服器後,伺服器向客戶端傳送文字資料

案例實現的是簡單的Socket通訊,當客戶端(Android客戶端)連線到指定伺服器以後,伺服器向客戶端傳送一句話文字資訊(你可以拓展其它的了) 先看一下服務端程式的實現吧 Server.java import java.io.IOException;

Netty框架的簡單使用,實現socket通訊

個人部落格:haichenyi.com。感謝關注   題外話,很多人都把JDK1.4提供的NIO稱之為非同步非阻塞I/O;其實,並不然,從嚴格意義上面講,它只能稱為非阻塞I/O。在JDK1.7提供的NIO 2.0,新增了非同步的套接字通道Channel,它才是

ThinkPHP和Workerman整合實現Socket通信Demo(轉載)

了吧 orm 忽略 demo 模式 end ip地址 支持 安全 轉自: https://www.jianshu.com/p/668ac301f9ca 因為最近有個項目涉及到Socket通信,於是自己嘗試了一下搭建一個服務端WebSocket通信的項目,寫個筆記,能幫助到

Websocket實現前後臺通訊demo小測試

  新需求大概如下:使用者登入系統,登入成功之後建立websocket連線,實現通訊   總體思路:前端不是我負責,只是簡單的做個功能,先實現登入,把使用者標識存入HttpSeesion,再建立websocket連線,攔截器HandshakeInterceptor攔截請求,把使用者標識存入Map<St

C#實現Socket通訊(同時監聽多客戶端)

//建立socket物件 //第一個引數:設定網路定址的協議、第二引數設定資料傳輸的方式、第三個引數設定通訊協議 Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketT

socket程式設計簡單Demo講解及原始碼分享(C# Winform 內網)

百科對於定義講的很詳細,就不再敘述了。 然後接下來主要是講解如何在winform上面實現簡單的socket通訊。 首先是伺服器和客戶端兩邊的設定了。 對於伺服器,主要做的是以下幾件事: 1.建立套接字(socket) Socket socketWatch

glib實現Socket通訊

server #include <glib.h> #include <gio/gio.h> #include <stdio.h> gchar *buffer; gboolean network_read(GIOChann

Java通過Hadoop實現RPC通訊簡單例項

一、定義server端程式碼 1.定義一個介面,該介面繼承org.apache.hadoop.ipc.VersionedProtocol介面 import org.apache.hadoop.ipc.VersionedProtocol; /** * 1.伺服器定義介面

C++:實現socket通訊(TCP/IP)例項

       首先宣告,博主之前從來沒有寫過通訊方面的東西,這次之所以寫這個是因為專案需要,因此本文主要介紹一個使用C++語言及Socket來實現TCP/IP通訊的例項,希望可以幫助入門者。 一、什麼是TCP/IP?         TCP提供基於IP環境下的資料可靠性傳

python實現socket通訊 TCP

 Server:  # server import socket address = ('127.0.0.1', 31500) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # s = socket.socket(

Socket通訊Demo

Demo 不講細節了,直接上程式碼, 如果要實現比較複雜的socket功能,最好不要像下面自己寫,使用fastsocket等框架。 Socket服務埠的程式碼: using System; using System.Collections.Generic; using Syst

Java Socket實戰之六 使用NIO包實現Socket通訊

前面幾篇文章介紹了使用java.io和java.net類庫實現的Socket通訊,下面介紹一下使用java.nio類庫實現的Socket。 java.nio包是Java在1.4之後增加的,用來提高I/O操作的效率。在nio包中主要包括以下幾個類或介面: * Bu

Java的Socket通訊簡單例項

服務端 package testlxd; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; im

Android客戶端與PC伺服器實現Socket通訊(wifi)

本文介紹Android終端持續掃描AP資訊併發送給伺服器端的實現。首先基於TCP協議在Android終端和PC兩端之間形成網路虛擬鏈路。使用ServerSocket建立TCP伺服器端,然後在Android客戶端使用Socket的構造器來連線伺服器。其中Android終端通過WIFI連線和PC處於同一區域網

Android多程序間採用AIDL方式進行通訊簡單DEMO

在上一節中,我介紹了Android中Service的生命週期以及一些有關知識。在這一節中,我採用程式碼編寫的方式來介紹一下不同程式之間也就是不同程序之間通訊採用AIDL方式。 首先我需要解釋一下,不同程式程序間採用AIDL方式啟動服務,我們可以看作成client客戶端與se

socket通訊官方demo

下面的示例程式建立一個連線到伺服器的客戶端。該客戶端是用非同步套接字生成的,因此在等待伺服器返回響應時不掛起客戶端應用程式的執行。該應用程式將字串傳送到伺服器,然後在控制檯顯示該伺服器返回的字串。 using System; using System.Net; using System.Net.Sockets

三、ESP8266LUA開發之建立TCP伺服器,實現socket通訊控制繼電器,串列埠,伺服器,客戶端收發資料小感悟

8266做伺服器,實現TCP通訊 注,實際燒錄的時候會因為註釋過多造成燒錄不進去的情況,這個時候需要刪除註釋! 先來測試8266建立伺服器,並分得IP 燒錄時,先燒wifi.lua,然後再燒init.lua。 init.lua

python實現socket通訊

server端 import socket import commands HOST='10.13.7.2' PORT=50007 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((