请问:使用ClientSocket能否指定端口? (200分)

  • 主题发起人 主题发起人 datm
  • 开始时间 开始时间
D

datm

Unregistered / Unconfirmed
GUEST, unregistred user!
使用ClientSocket连接时我能不能指定端口?
比如我的机器IP是192.168.1.2,我必须用1080端口去连接服务器192.168.1.1的80端口来存取数据。
ClientSocket能不能实现,如果不能实现,有什么其他方法?(最好有源码,*^_^*)
 
那个port属性不就是用来指定端口的吗。
 
我知道你的意思,你是说连接的本机打开端口是吗?
这个是由系统控制的,系统找一个空闲端口,一般是1000以上,一般程序没有必要控制这个
 
指定端口是可以的
port就是
缺省是0
肯定要指定一个
不过我用的都是服务器和客户端用同一个端口
你用1080去连80不知道能连上不
 
MilkRoad: 那是指定服务器的端口
张无忌: 我确实很需要指定,帮帮忙吧!
 
那QQ上说啊,
IP协议就是用本机上的一个端口和其他机器上的端口通讯,
CLIENT是客户端,ClientSocket的哪个Port是远程机器上的端口,你就是和远程
机器上的这个端口连接,远程机器就是打开这个端口提供服务的
你上网的时候可以用NETSTAT -A查看当前的所有TCP/UDP连接
 
张无忌:我现在办公室,没QQ。
连接以后 ClientSocket.Socket.LocalPort本来就可找到端口,但是我要连接之前就指定
必须用1080端口,而且我能保证没有其他程序占用(好像有时候占用也没事)
 
ClientSocket.Socket.LocalPort是只读属性的,不能修改的,你说的情况不可能吧?
对方的服务器一般不会要求客户机的端口必须是规定的端口吧,那要求太高了点吧
 
还有客户端占用同一个端口到是没有见过,服务器端在默写情况下有这种情况
用SO_EXCLUSIVEADDRUSE参数就可以达到这一点,但是只对2000有用,而且用户
要是administrator才行
 
是啊,就是因为不能修改才头疼的。
系统既然能随便找一个空闲端口来用,那么也一定能指定。
可是我就是不知道怎么做,而且我又必须这么做。拜托了。
 
那你用ClientSocket是达不到这一点的。这个问题我以前也考虑过,
但是一直没有找到解决办法,我想你可以把服务器端修改一下才行
 
服务器和客户端端口必须一致才能发送接收信息的。
 
服务器和客户端必须端口一致才能发送接收数据的。
 
你的端口号也必须是80才行。
 
xueren 他的意思是说本机打开的端口必须是1080服务器端口是80才能和远程的服务器连接
 
系统既然能随便找一个空闲端口来用,那么也一定能指定。
可能我们要深入VCL内部才行了,我想一定是在这里指定端口的。
xueren:你的说法不对,我已经验证过了
 
我用winsock的函数做个实验,一会再说
 
to datm 哪个ClientSocket.Socket.LocalPort属性我看过原代码的,是通过
getsockname函数得到当前端口的
 
我刚才用WINSOCK函数写个CLIENT
我想一定是用setsockopt来修改这个值,但是找不到对应的参数。
如是我想这个port是系统管理的,用户是不能修改的,TCP头的2个字节就是源端口,
系统是随即打开端口和远程机器连接的,如果你指定一个已经占用的端口,那么
连接会失败,我想系统不希望发生这种情况。
不知道对不对,希望高手指点
 
大家请继续,不够再加分
 
后退
顶部