黃聰 C 下如何實現伺服器 客戶端的聊天程式

2021-09-05 23:13:56 字數 4364 閱讀 4129

1using

system;

2using

system.collections.generic;

3using

system.componentmodel;

4using

system.data;

5using

system.drawing;

6using

system.text;

7using

system.windows.forms;89

using

system.net;

10using

system.net.sockets;

11using

system.threading;

12using

system.xml;

1314

namespace

server

1522

23private

void

servermain_load(

object

sender, eventargs e)

2428

29private

void

配置引數toolstripmenuitem_click(

object

sender, eventargs e)

3034

35private

void

關於toolstripmenuitem_click(

object

sender, eventargs e)

3640

///41

///獲得xml檔案中的埠號

42///

43///

44private

intgetport()

4554

catch

//預設是660055}

5657

//宣告將要用到的類

58private

ipendpoint serverinfo;

//存放伺服器的ip和埠資訊

59private

socket serversocket;

//服務端執行的socket

60private

thread serverthread;

//服務端執行的執行緒

61private

socket clientsocket;

//為客戶端建立的socket連線

62private

intclientnumb;

//存放客戶端數量

63private

byte

msgbuffer;

//存放訊息資料

6465

private

void

cmdstar_click(

object

sender, eventargs e)

6686

87//

接受客戶端連線的方法

88private

void

recieveaccept()

8997}98

99//

回發資料給客戶端

100private

void

recievecallback(iasyncresult ar)

101112

rsocket.beginreceive(msgbuffer, 

0, msgbuffer.length, 0, 

newasynccallback(recievecallback), rsocket);

113114

}115

}116

catch

117118

}119

120private

void

cmdstop_click(

object

sender, eventargs e)

121130

131132

133}

134}

客戶端**:

1using

system;

2using

system.collections.generic;

3using

system.componentmodel;

4using

system.data;

5using

system.drawing;

6using

system.text;

7using

system.windows.forms;89

using

system.net;

10using

system.net.sockets;

1112

namespace

client

1320

21private

ipendpoint serverinfo;

22private

socket clientsocket;

23private

byte msgbuffer;

24private

byte msgsend;

2526

private

void

clientmain_load(

object

sender, eventargs e)

2739

40private

void

cmdenter_click(

object

sender, eventargs e)

4157

catch

5861}62

63private

void

receivecallback(iasyncresult ar)

6472

catch

737778}

7980

private

void

cmdsend_click(

object

sender, eventargs e)

8188

else

8992}93

94private

void

cmdexit_click(

object

sender, eventargs e)

95102

clientsocket.close();

103104

this

.cmdsend.enabled 

=false

;105

this

.cmdenter.enabled 

=true

;106

this

.cmdexit.enabled 

=false

;107

}108

109private

void

recievemsg_textchanged(

object

sender, eventargs e)

110113

114private

void

sendmsg_keydown(

object

sender, keyeventargs e)

115121

}122

123124

125126

}127}

我只對伺服器端的**做了注釋,客戶端就沒有寫注釋了,因為**是差不多的。區別在於客戶端不需要監聽,也不需要啟用執行緒進行委託。

關於 serversocket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);

這句**,我想給初學者解釋一下,這裡「addressfamily.internetwork」表示的是使用ipv4位址,「sockettype.stream」表示使用的是流格式(另外還有資料報格式和原始套接字格式),「protocoltype.tcp」表示使用tcp協議(另外還有很多其它協議,例如大家常看到的udp協議)。

另外關於socket類中的beginreceive方法,請大家參考msdn,裡面有詳細說明。

<?

xml version="1.0" encoding="utf-8" 

?>

<

server

>

<

serverport

>

6600

serverport

>

server

>

C 下如何實現伺服器 客戶端的聊天程式

1using system 2using system.collections.generic 3using system.componentmodel 4using system.data 5using system.drawing 6using system.text 7using system...

python socket 實現伺服器 客戶端通訊

伺服器 usr env bin python coding utf 8 import socket server def server sock socket.socket socket.af inet,socket.sock stream sock.bind localhost 8000 sock...

thrift下C 伺服器和客戶端開發

我用的是c 所以我舉乙個c 的例子,簡單說一下thrift的使用入門。例子描述是這樣的 我們將學生資訊 學號,姓名,性別,年齡 由客戶端傳送到服務端。實現這個例子,我們大致要做以下幾部分事情 1 書寫.thrift檔案 2 生成cpp檔案 3 編寫客戶端 4 編譯cpp檔案並執行 1 書寫.thri...