導航:首頁 > IDC知識 > 建立socket伺服器

建立socket伺服器

發布時間:2020-12-23 07:01:10

1、python怎麼建立socket服務端

1
首先先建立一個python文件,命名為 socket_server1.py

2
下面是相關的步驟圖.

3
先導入相關的模塊.並且定義相關的主機及埠.

4
完整的socket_server1.py文件.

5
設置好之後,通過命令提示符測試(進行測試.開始-----運行-----cmd)

6
先使用python 運行下剛剛的那個文件. >>python socket_server1.py

7
客戶端直接使用telnet代替測試一下.>>telnet 127.0.0.1 10086

8
然後在服務端的窗口上面會出現相關的客戶端信息,在客戶端的窗口上面,輸入一個字元,伺服器端會顯示出來,並且客戶端上面會返回一個大寫的字元。

9
這個就是一個簡單的 python的socket的伺服器端了。只是測試,沒有排錯日誌

2、Socket編程如何搭建一個外網可以訪問的伺服器

搭建外網訪問,首先你要有一台外網可訪問的伺服器,有以下幾種方法可以實現。
一、購買外網伺服器。由於伺服器端使用JAVA語言開發,所以外網伺服器操作系統可以是Linux或Windows,這個需要你花錢購買。如果只是測試,你可以選擇購買阿里雲的雲伺服器,非常便宜。
二、還有一種方法就是你通過花生殼之類的軟體進行映射你的網路,但花生殼對長城寬頻之類的網路支持不是特別好,如果需要很好的支持,那也需要花錢購買。
三、如果你是通過路由器上網,並且可以操作路由器許可權且使用的是電信或者是聯通的網路,那可以直接在路由器裡面做埠映射,這個你可以百度一下,有很多文章講的非常清楚,這里篇幅限制,就不貼了。
四、如果你是直接通過貓上網且使用電信或聯通寬頻,那可以直接使用本機外網IP訪問你的程序。
以上四種方法中,最穩定的還是購買外網伺服器,其它都會有各種問題,你可以選擇其中適合你的一種方法。希望能幫助到你

3、我想問下如何在手機上建立一個伺服器,用Socket的方法如何實現。

TCP方式:
TCP協議客戶端實現:

//創建一個Socket對象,指定伺服器端的IP地址和埠號
Socketsocket=newSocket("192.168.1.104",4567);
//使用InputStream讀取硬碟上的文件,這里只是用文件當做信息源,可以讀取控制項用戶輸入信息
InputStreaminputStream=new
FileInputStream("f://file/words.txt");

//從Socket當中得到OutputStream

OutputStream outputStream=socket.getOutputStream();
bytebuffer[]=newbyte[4*1024];inttemp=0;

//將InputStream當中的數據取出,並寫入到OutputStream當中
while((temp=inputStream.read(buffer))!=-1)

5
{
outputStream.write(buffer,0,temp);}
outputStream.flush();}

TCP協議伺服器端實現:

//聲明一個ServerSocket對象
ServerSocketserverSocket=null;
try{

//創建一個ServerSocket對象,並讓這個Socket在4567埠監聽

serverSocket=newServerSocket(4567);

//調用ServerSocket的accept()方法,接受客戶端所發送的請求,
//如果客戶端沒有發送數據,那麼該線程就停滯不繼續

Socketsocket=serverSocket.accept();
//從Socket當中得到InputStream對象

InputStreaminputStream=socket.getInputStream();
bytebuffer[]=newbyte[1024*4];
inttemp=0;

//從InputStream當中讀取客戶端所發送的數據
while((temp=inputStream.read(buffer))!=-1)
{
System.out.println(newString(buffer,0,temp));}
}
catch(IOExceptione)
{

e.printStackTrace();}

serverSocket.close();
}

UDP方式
UDP的客戶端代碼實現如下:

public static void main(String[]args)
{
try{

//首先創建一個DatagramSocket對象

DatagramSocket socket=new DatagramSocket(4567);
//創建一個InetAddree

6

InetAddress serverAddress=InetAddress.getByName("192.168.1.104");

String str="hello";

//這是要傳輸的數據

byte data[]=str.getBytes();

//把傳輸內容分解成位元組

//創建一個DatagramPacket對象,並指定要講這個數據包發送到網
絡當中的哪個地址,以及埠號

DatagramPacket packet=new
DatagramPacket(data,data.length,serverAddress,4567);
//調用socket對象的send方法,發送數據
socket.send(packet);}
catch(Exceptione)
{

e.printStackTrace();}
}

UDP的服務端代碼實現如下:

//創建一個DatagramSocket對象,並指定監聽的埠號

DatagramSocket socket=new DatagramSocket(4567);
bytedata[]=newbyte[1024];
//創建一個空的DatagramPacket對象

DatagramPacket packet=new DatagramPacket(data,data.length);
//使用receive方法接收客戶端所發送的數據,
//如果客戶端沒有發送數據,該進程就停滯在這里

socket.receive(packet);

Stringresult=newString(packet.getData(),packet.getOffset(),
packet.getLength());

System.out.println("result--->"+result);

4、如何在客戶端上建立一個Socket與伺服器端連接,包括連接的函數?

ClientSocket組件為客戶端組件。它是通信的請求方,也就是說,它是主動地與伺服器端建立連接。
ServerSocket組件為伺服器端組件。它是通信的響應方,也就是說,它的動作是監聽以及被動接受客戶端的連接請求,並對請求進行回復。
ServerSocket組件可以同時接受一個或多個ClientSocket組件的連接請求,並與每個ClientSocket組件建立單獨的連接,進行單獨的通信。因此,一個伺服器端可以為多個客戶端服務。
設計思路
本例包括一個伺服器端程序和一個客戶端程序。客戶端程序可以放到多個計算機上運行,同時與伺服器端進行連接通信。
本例的重點,一是演示客戶端與伺服器端如何通信;二是當有多個客戶端同時連接到伺服器端時,伺服器端如何識別每個客戶端,並對請求給出相應的回復。為了保證一個客戶端斷開連接時不影響其它客戶端與伺服器端的通信,同時保證伺服器端能夠正確回復客戶端的請求,在本例中聲明了一個記錄類型:
type
client_record=record
CHandle: integer; //客戶端套接字句柄
CSocket:TCustomWinSocket; //客戶端套接字
CName:string; //客戶端計算機名稱
CAddress:string; //客戶端計算機IP地址
CUsed: boolean; //客戶端聯機標志
end;
利用這個記錄類型數據保存客戶端的信息,同時保存當前客戶端的連接狀態。其中,CHandle保存客戶端套接字句柄,以便准確定位每個與伺服器端保持連接的客戶端;Csocket保存客戶端套接字,通過它可以對客戶端進行回復。Cused記錄當前客戶端是否與伺服器端保持連接。
下面對組件ServerSocket和ClientSocket的屬性設置簡單說明。
ServerSocket的屬性:
· Port,是通信的埠,必須設置。在本例中設置為1025;
· ServerTypt,伺服器端讀寫信息類型,設置為stNonBlocking表示非同步讀寫信息,本例中採用這種方式。
· ThreadCacheSize,客戶端的最大連接數,就是伺服器端最多允許多少客戶端同時連接。本例採用默認值10。
其它屬性採用默認設置即可。
ClientSocket的屬性:
· Port,是通信的埠,必須與伺服器端的設置相同。在本例中設置為1025;
· ClientType,客戶端讀寫信息類型,應該與伺服器端的設置相同,為stNonBlocking表示非同步讀寫信息。
· Host,客戶端要連接的伺服器的IP地址。必須設置,當然也可以在代碼中動態設置。
其它屬性採用默認設置即可。

5、如何搭建 websocket伺服器

其實,在伺服器的選擇上很廣,基本上,主流語言都有WebSocket的伺服器端實現,而我們作為前端開發工程師,當然要選擇現在比較火熱的NodeJS作為我們的伺服器端環境了。
NodeJS本身並沒有原生的WebSocket支持,但是有第三方的實現(大家要是有興趣的話,完全可以參考WebSocket協議來做自己的實現),我們選擇了「ws」作為我們的伺服器端實現。
由於本文的重點是講解WebSocket,所以,對於NodeJS不做過多的介紹,不太熟悉的朋友可以去參考NodeJS入門指南(http://www.nodebeginner.org/index-zh-cn.html)。
安裝好NodeJS之後,我們需要安裝「ws」,也就是我們的WebSocket實現,安裝方法很簡單,在終端或者命令行中輸入:
npm install ws
,等待安裝完成就可以了。
接下來,我們需要啟動我們的WebSocket服務。首先,我們需要構建自己的HTTP伺服器,在NodeJS中構建一個簡單的HTTP伺服器很簡單,so easy。代碼如下:
var app = http.createServer(onRequest ).listen( 8888 );
onRequest()作為回調函數,它的作用是處理請求,然後做出響應,實際上就是根據接收的URL,在伺服器上查找相應的資源,最終返回給瀏覽器。
在構建了HTTP伺服器後,我們需要啟動WebSocket服務,代碼如下:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer( { server : app } );
從代碼中可以看出,在初始化WebSocket服務時,把我們剛才構建好的HTTP實例傳遞進去就好。到這里,我們的服務端代碼差不多也就編寫完成了。怎麼樣?很簡單吧。
望採納!

6、python怎樣建立socket伺服器

下面的例子是多線程實現的socket伺服器:

import socketimport threadingclass ThreadedServer(object):
def __init__(self, host, port):
self.host = host
self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind((self.host, self.port))

def listen(self):
self.sock.listen(5)
while True:
client, address = self.sock.accept()
client.settimeout(60)
threading.Thread(target = self.listenToClient,args = (client,address)).start()

def listenToClient(self, client, address):
size = 1024
while True:
try:
data = client.recv(size)
if data:
# Set the response to echo back the recieved data
response = data
client.send(response)
else:
raise error('Client disconnected')
except:
client.close()
return Falseif __name__ == "__main__":
while True:
port_num = input("Port? ")
try:
port_num = int(port_num)
break
except ValueError:
pass

ThreadedServer('',port_num).listen()

7、如何搭建websocket伺服器

在伺服器的選擇上很廣,基本上,主流語言都有WebSocket的伺服器端實現,而我們作為前端開發工程師,當然要選擇現在比較火熱的NodeJS作為我們的伺服器端環境了。
NodeJS本身並沒有原生的WebSocket支持,但是有第三方的實現(大家要是有興趣的話,完全可以參考WebSocket協議來做自己的實現),我們選擇了「ws」作為我們的伺服器端實現。
由於本文的重點是講解WebSocket,所以,對於NodeJS不做過多的介紹,不太熟悉的朋友可以去參考NodeJS入門指南(http://www.nodebeginner.org/index-zh-cn.html)。
安裝好NodeJS之後,我們需要安裝「ws」,也就是我們的WebSocket實現,安裝方法很簡單,在終端或者命令行中輸入:
npm install ws
,等待安裝完成就可以了。
接下來,我們需要啟動我們的WebSocket服務。首先,我們需要構建自己的HTTP伺服器,在NodeJS中構建一個簡單的HTTP伺服器很簡單,so easy。代碼如下:
var app = http.createServer(onRequest ).listen( 8888 );
onRequest()作為回調函數,它的作用是處理請求,然後做出響應,實際上就是根據接收的URL,在伺服器上查找相應的資源,最終返回給瀏覽器。
在構建了HTTP伺服器後,我們需要啟動WebSocket服務,代碼如下:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer( { server : app } );
從代碼中可以看出,在初始化WebSocket服務時,把我們剛才構建好的HTTP實例傳遞進去就好。到這里,我們的服務端代碼差不多也就編寫完成了。

8、編寫代碼,使用java ServerSocket創建伺服器端ServerSocket的過程。

伺服器端代碼:

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public void server(){
        try {
            ServerSocket serverSocket = new ServerSocket(8888); //建立伺服器端的套接字,並監聽8888埠

            Socket socket = serverSocket.accept(); //如果有請求到達,則接受請求,並建立一個新的套接字
            InputStream is = socket.getInputStream(); //獲取此套接字上的輸入流,用於接收消息

            //接下來就是獲取套接字里的位元組流,並轉化為字元串
            byte[] bytes = new byte[1024];
            int count;
            StringBuilder sb = new StringBuilder();
            while((count = is.read(bytes)) != -1){
                sb.append(new String(bytes, 0, count));
            }

            is.close();
            System.out.println(sb.toString());

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        Server s = new Server();
        s.server();
    }

}

另附客戶端:

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;

public class Client {
    public void client(){
        try {
            Socket socket = new Socket(); //建立套接字
            socket.connect(new InetSocketAddress("127.0.0.1", 8888)); //連接到指定IP地址的主機,並指定埠號接收消息

            OutputStream os = socket.getOutputStream(); //獲取此連接上的輸出流,用於發送數據
            os.write(new String("Hello, world!").getBytes()); //將字元串轉化為位元組數組寫入輸出流
            os.flush();//刷新此輸出流,將位元組流寫入它們預期的目標
            os.close(); //關閉連接,否則會報連接重置異常
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Client c = new Client();
        c.client();
    }
}

9、python怎麼建立socket服務端

python是一款應用非常廣泛的腳本程序語言,谷歌公司的網頁就是用編寫。python在生物信息、統計、網頁製作、計算等多個領域都體現出了強大的功能。python和其他腳本語言如java、R、Perl 一樣,都可以直接在命令行里運行腳本程序。工具/原料
python;CMD命令行;windows操作系統
方法/步驟
1、首先下載安裝python,建議安裝2.7版本以上,3.0版本以下,由於3.0版本以上不向下兼容,體驗較差。

2、打開文本編輯器,推薦editplus,notepad等,將文件保存成 .py格式,editplus和notepad支持識別python語法。
腳本第一行一定要寫上 #!usr/bin/python
表示該腳本文件是可執行python腳本
如果python目錄不在usr/bin目錄下,則替換成當前python執行程序的目錄。
3、編寫完腳本之後注意調試、可以直接用editplus調試。調試方法可自行百度。腳本寫完之後,打開CMD命令行,前提是python 已經被加入到環境變數中,如果沒有加入到環境變數,請百度

4、在CMD命令行中,輸入 「python」 + 「空格」,即 」python 「;將已經寫好的腳本文件拖拽到當前游標位置,然後敲回車運行即可。

10、如何採用java采socket建立一個伺服器

try {
    // socket v5
    // 4byte(5 2 0 2) @see java.net.SocksSocketImpl
    int len = dis.read(buffer);
    // reply client
    dos.write(new byte[]{Config.PROTO_VERS, Config.NO_AUTH});
    dos.flush();
     
    // read
    // PROTO_VERS(1byte)
    // CONNECT(1byte)
    // 0(1byte)
    // DOMAIN_NAME/IPV4/IPV6(1byte)   DOMAIN_NAME(not consider now)
    // addr(IPV4:4byte/IPV6:16byte)
    // port>>8&0xff(1byte)
    // port&0xff(1byte)
    len = dis.read(buffer);
    byte addrType = buffer[3];
    byte[] applyData = null;
     
    String serverIp = null;
    int serverPort = 0;
    if (addrType == Config.IPV4) {
        serverIp = Util.bytes2ipv4(buffer, 4, 4);
        serverPort = buffer[8] << 8 | buffer[9];
        // set reply data
        applyData = new byte[10];
        applyData[1] = Config.REQUEST_OK;
        applyData[3] = Config.IPV4;
        for (int i = 4; i < 10; i++) {
            // fill ip, port
            applyData[i] = buffer[i];
        }
    } else if (addrType == Config.IPV6) {
        serverIp = Util.bytes2ipv6(buffer, 4, 16);
        serverPort = buffer[20] << 8 | buffer[21];
        // set reply data
        applyData = new byte[6];
        applyData[1] = Config.REQUEST_OK;
        applyData[3] = Config.IPV6;
        applyData[4] = buffer[20];
        applyData[5] = buffer[21];
    }
    // reply
    dos.write(applyData);
    dos.flush();
     
    // connect the server
    // serverIp是伺服器ip,serverPort是伺服器埠,用這兩個
    // 創建與伺服器的socket連接
    Socket socket = new Socket(serverIp, serverPort);
    // 之後處理客戶端與伺服器的數據交互就用這個socket轉發就行了
     
    // finally success!!!
} catch (Exception e) {
    e.printStackTrace();
}

與建立socket伺服器相關的知識