線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3989
推到 Plurk!
推到 Facebook!

TCPSERVER/Client互通問題

尚未結案
jeremywu
一般會員


發表:3
回覆:4
積分:1
註冊:2006-10-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-27 13:21:47 IP:61.220.xxx.xxx 訂閱
各位大大,
目前我使用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-27 16:29:18 IP:61.67.xxx.xxx 未訂閱
不知道你使用的是那一種TCPserver? 或者po上部份碼來看看
jeremywu
一般會員


發表:3
回覆:4
積分:1
註冊:2006-10-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-27 18:10:31 IP:61.220.xxx.xxx 訂閱
在下列這段敘述中有辦法變更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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-15 16:01:14 IP:222.184.xxx.xxx 訂閱
太深奥了俺 看不懂啦~~~~~~~~~~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-15 17:17:20 IP:61.225.xxx.xxx 未訂閱
因為他觀念錯了。所以你看不懂是正確的。
對於 server 來說。根本不用去管那些事。
localhost 就 localhost.
那些事情是 遶路表在做的。
是 netmask 在做的。
寫程式的人不用去理它。
去理它就像在擔心天會掉下來一樣。^_____________^
===================引 用 ascd42700 文 章===================
太深奥了俺 看不懂啦~~~~~~~~~~
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-24 07:30:03 IP:221.174.xxx.xxx 訂閱
我想jeremywu兄弟是想改变服务器与客户端通讯IP

在服务器启动前你可以通过注册表修改,那样获取的就是你修改后的地址了,呵呵:)
系統時間:2024-04-20 21:16:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!