問題:
首先設定簡單的服務端監聽
1delegate
void
settextevent(control ctl,
string
text);
2void
settextline(control ctl,
string
text)3);
6else
7ctl.text
=text
+environment.newline
+ctl.text; 8}
thread thread = new thread(doactions);
thread.isbackground = true;
thread.start();
1void
doactions()211
catch
(exception ex)
1213
settextline(logctl,
"繫結成功!");
14bool
done
=true;15
while
(done)
1632
catch
(exception ex)
3338}39
}40}奇怪的問題就出現在這裡。settextline(msgctl, receivedstr);根本無法達到 ctl.text =
text
+environment.newline
+ctl.text; 這個目的,效果變成了
ctl.text = text的效果。而其他地方都是可以的。偏偏,如果把receivedstr這個字元設定為固定值,比如把receivedstr =
receivedstr.trim();改成
receivedstr = datetime.now.tostring();那麼,就是ctl.text=
text
+environment.newline
+ctl.text; 的效果。而從int
size
=client.receive(b);得出的byte陣列讀出卻出現問題,真是太奇怪了。還望知道的朋友能告知!困擾了我好久的問題!
下面是我的笨蛋解決方案,用的不是很爽。
解決方法:
設定兩個處理方法。
void
doactions()
catch
(exception ex)
settextline(logctl,
"繫結成功!");
bool
done
=true
;while
(done)
catch
(exception ex)}}
}delegate
void
settextevent(control ctl,
string
text);
void
settext(control ctl,
string
text)
);else
ctl.text
+=text;
}void
settextline(control ctl,
string
text)
);else
ctl.text
=text
+environment.newline
+ctl.text;
}在receive後為什麼要用
settext(msgctl, receivedstr);
settext(msgctl, environment.newline);
進行換行並且無法ctl.text =
text
+environment.newline
+
vc 多執行緒程式設計 SOCKET通訊
vc 多執行緒程式設計 socket通訊 include stdafx.h include 伺服器端程式 dword winapi answerthread lpvoid lparam int main sockaddr in service service.sin family af inet s...
Socket 多執行緒
服務端 include include pragma comment lib,ws2 32 include void sendfuction socket sockconn void recvfunction socket sockclient void main if lobyte wsadata...
C 中Socket多執行緒程式設計例項
要通過網際網路進行通訊,你至少需要一對套接字,其中乙個執行於客戶機端,我們稱之為clientsocket,另乙個執行於伺服器端,我們稱之為serversocket。根據連線啟動的方式以及本地套接字要連線的目標,套接字之間的連線過程可以分為三個步驟 伺服器監聽,客戶端請求,連線確認。所謂伺服器監聽,是...