TCPSERVER/Client互通問題 |
尚未結案
|
jeremywu
一般會員 發表:3 回覆:4 積分:1 註冊:2006-10-18 發送簡訊給我 |
各位大大,
目前我使用tcp server 及tcpclient在互丟資料 但目前遭遇到一個問題 當我開啟socket時,socket是否就已經將本機的localhostaddress代入 我有什麼辦法可以利用程式的方式變更localhostaddress的ip位置 我之所以要這麼做的目的為 由於每一台電腦不是可以設定多組ip 我希望在程式畫面上新增一個edit 讓使用者填入ip 位置(此ip位置必須是原先處於此台電腦tcp/ip中的ip位置) 再利用畫面上所填入的ip位置去和tcpclient溝通 不知在tcpserver端有什麼方式可以做到我上述功能 我大概檢視一下wsocket中tcpserver的各項methods,好像沒有一個參數是在指定ip的 可否請知道該如何處理的大大,教教小弟一下 謝謝 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
jeremywu
一般會員 發表:3 回覆:4 積分:1 註冊:2006-10-18 發送簡訊給我 |
在下列這段敘述中有辦法變更localhostaddress嗎
因為我對socket不太熟 我的認知是,socket啟動時,是抓取localhostaddress當做本機ip 是否可以變更其ip為其他ip(這些ip都是存在於本機的ip清單中) 讓他可以利用其他的ip位置和tcpclient溝通 procedure TTCPServer.OpenConnection(Socket: TSocket; Error: word); var Len: integer; NewSocket: TSocket; SockAddrIn: TSockAddrIn; SockOpt: LongBool; EventMask: longint; begin if Error <> 0 then SocketError(Error) else begin Len:= SizeOf(SockAddrIn); // {$IFDEF VER100} // Delphi 3 NewSocket:= accept(FLocalSocket, @SockAddrIn, @Len); // {$ELSE} // Delphi 2 // NewSocket:= accept(FLocalSocket, SockAddrIn, Len); // {$ENDIF} if NewSocket = INVALID_SOCKET then begin SocketError(WSAGetLastError); Exit; end; EventMask:= (FD_READ or FD_CLOSE); if WSAASyncSelect(NewSocket, FHandle, WM_ASYNCSELECT, EventMask) <> 0 then begin SocketError(WSAGetLastError); closesocket(NewSocket); Exit; end; SockOpt:= true; {Enable OOB Data inline} if setsockopt(NewSocket, SOL_SOCKET, SO_OOBINLINE , PChar(@SockOpt), SizeOf(SockOpt)) <> 0 then begin SocketError(WSAGetLastError); closesocket(NewSocket); Exit; end; if not FClients.Add(NewSocket) then SocketClose(NewSocket, FHandle) else if Assigned(FOnAccept) then FOnAccept(Self, NewSocket); end; end; |
ascd42700
一般會員 發表:0 回覆:1 積分:0 註冊:2007-09-15 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |