小弟刚接触socket编程,在windows mobile 6上写一个ftp client, 从pc上移植过去的,pc上完全没问题。通过GPRS走cmnet,服务器端用serv-U做测试,目前GPRS能正常连通,而且21端口能连上,能正常登陆,用的是PASV模式,但是在上传文件的时候遇到socket error, 具体涉及的代码: IPAddress ipAddress = IPAddress.Parse(PASVIp);
Socket tempSocket = new
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); tempSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 5000);
IPEndPoint ep = new
IPEndPoint(Dns.GetHostEntry(ipAddress).AddressList[0], PASVPort);
之前登陆是也要涉及这段代码,完全没问题,但是在上传到时候tempSocket.SetSocketOption这行报错:socket error 10042
我试了把这行注释掉,在pc上还是没问题,但是在PDA上 下一行IPEndPoint ep初始化就失败了,报的错是:socket error 11001
这时候服务器的ip跟port都是有的不知道谁能帮帮我,非常感谢~
Socket tempSocket = new
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); tempSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 5000);
IPEndPoint ep = new
IPEndPoint(Dns.GetHostEntry(ipAddress).AddressList[0], PASVPort);
之前登陆是也要涉及这段代码,完全没问题,但是在上传到时候tempSocket.SetSocketOption这行报错:socket error 10042
我试了把这行注释掉,在pc上还是没问题,但是在PDA上 下一行IPEndPoint ep初始化就失败了,报的错是:socket error 11001
这时候服务器的ip跟port都是有的不知道谁能帮帮我,非常感谢~
GPRS网络肯定是没问题的,测试的同时能通过cmnet上网,而且FTP client一直是保持登陆的
你指的权限是Serv-U上吗?我设的是全部权限
10042://错误的协议选项
11001://主机找不到但是出11001错误的时候IPEndPoint里ip和port都是有的,不应该找不到主机啊
GPRS的ip地址好像是移动的内网地址,但是我ftp用的是pasv模式,让PDA主动连服务器啊,既然能登陆说明只要服务器上相应端口有监听,PDA的socket主动连接服务器是可行的
tempSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 5000);
好像PDA不能进行setsocketoption的设置
后面的问题是错在IPEndPoint ep = new IPEndPoint(Dns.GetHostEntry(ipAddress).AddressList[0], PASVPort); ,我发现没必要这么写,直接IPEndPoint ep = new IPEndPoint(ipAddress, PASVPort);连接就成功了不过谁能给我合理的解释为啥PDA上就不能setsocketoption?有这方面的文章吗?