Socket 簡單的控制台案例步驟

2021-10-05 01:28:32 字數 2252 閱讀 2229

一、伺服器端

1. 例項化並設定socket例項物件

a.建立ip位址和埠

b.繫結監聽位址

c.設定一下允許同時訪問數

2. 監聽連線

a.通過啟動乙個新的執行緒執行,這樣主線程不會假死(啟動執行緒,所帶的引數必須是object型別)

b.利用迴圈等待連線並返回乙個負責通訊的socket例項

c.返回的socket例項中可以獲取到所連線客服的ip位址

3. 接收客服的傳送過來的訊息

a.在監聽方法中啟動乙個新的執行緒執行

b.利用迴圈獲取傳送過來的訊息,呼叫獲取訊息的方法需要傳遞乙個位元組變數引數,作為容器。方法返回值為int,表示獲取到的有效位元組數

c.如果有效位元組數為0則跳出迴圈

d.接收到訊息給客服的返回訊息

4. 控制台程式伺服器端**

using system;

using system.net;

using system.net.sockets;

using system.text;

using system.threading;

namespace serversocket

///

/// 監聽連線

///

///

static void listen(object o)

connection");

//開啟乙個新執行緒不停接收訊息

thread thread = new thread(recive);

thread.isbackground = true;

thread.start(send);

}}

///

/// 接收訊息

///

///

static void recive(object o)

var str = encoding.utf8.getstring(buffer,0, effective);

console.writeline(str);

var buffers = encoding.utf8.getbytes("server return message");

send.send(buffers);}}

}}

二、客戶端

1. 例項化並進行連線socket例項物件

a.建立ip位址和埠(伺服器的ip和埠)

b.與伺服器端建立鏈結

2.接收伺服器傳送的訊息

a.啟動乙個新的執行緒執行

b.利用迴圈獲取傳送過來的訊息,呼叫獲取訊息的方法需要傳遞乙個位元組變數引數,作為容器。方法返回值為int,表示獲取到的有效位元組數

c.如果有效位元組數為0則跳出迴圈

3.給伺服器傳送訊息

a. 呼叫socket物件的send()方法直接傳送

4. 控制台程式客戶端**

using system;

using system.net;

using system.net.sockets;

using system.text;

using system.threading;

namespace socketclient

");var temp = socketclient.send(buffter);

thread.sleep(1000);

}}

///

/// 接收訊息

///

///

static void recive(object o)

var str = encoding.utf8.getstring(buffer, 0, effective);

console.writeline(str);}}

}}

沒有控制台視窗的控制台程式

include include pragma comment linker,subsystem windows entry maincrtstartup int main int argc,char argv 編譯後執行程式會彈出乙個訊息框,而沒有背後的控制台視窗。再看看下面的 include in...

C 向控制台簡單輸出輸入

在c 中,向console輸出的方法有多種。這裡就詳細介紹一種,就是在console類中的write writeline 方法中應用格式化字串。格式如下 console.writeline 格式字串 變數列表 console.write 格式字串 變數列表 示例 code class program...

C語言控制台註冊登入 選擇功能案例

include void main else int czxh int xh 定義統計的變數 char name 8 double number int suanshu int fn 跳出迴圈定義的變數 fn printf 現在進入功能選擇 n 功能選擇 lop printf 輸入1進入成績統計功能...