小弟刚接触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都是有的不知道谁能帮帮我,非常感谢~

解决方案 »

  1.   


    GPRS网络肯定是没问题的,测试的同时能通过cmnet上网,而且FTP client一直是保持登陆的
      

  2.   


    你指的权限是Serv-U上吗?我设的是全部权限
    10042://错误的协议选项   
    11001://主机找不到但是出11001错误的时候IPEndPoint里ip和port都是有的,不应该找不到主机啊
      

  3.   

    GPRS  貌似是通过代理IP出去的
      

  4.   


    GPRS的ip地址好像是移动的内网地址,但是我ftp用的是pasv模式,让PDA主动连服务器啊,既然能登陆说明只要服务器上相应端口有监听,PDA的socket主动连接服务器是可行的
      

  5.   

    我现在初步解决这个连接问题了,问题就出在
    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?有这方面的文章吗?