1.改connect的對象IP就可以了。Ex:IPsaServer.sin_addr.s_addr = inet_addr( "192.168.1.1" )
但請確定遠端有用相同的IP與port在進行listening。
2.我沒有看程式內容,不過一般client你是不需要指定IP給他的,只有server在進行bind與listening的時候,你需要指定IP。所以當你client要連向server的時候,你的確是要指定server IP給client,不然client是不知道server的IP是多少。除非client內部有server的清單,或是client可自動去尋找server,這樣才不用指定IP給他。
3.我不是c++的強的高手,只是個打雜小弟而已,只是剛好最近也在碰這些東西。其實檔案也是由一堆文字(ASCII)或數值(binary)所組成的。所以你只要會傳字串,那麼傳檔就只是把檔案內的文字讀進來,然後將其當字串傳出就好。然後再接收端寫入到所指定的檔案內即可。當然Binary也是可以用相同的方式去做,且binary的傳檔方式會比較通用,可支援各種格式的檔案。
唯一要注意的是讀寫檔與資料傳輸時如有發生遺失的例外處理,其他的就與一般常用的傳字串的方式一樣。
在c++底下,winsock的send與receive並沒有將string與binary分開(以前玩VB的時候印象VB.net有將Sendstring與Sendbinary分成兩個函式來使用)。所以只需將您所要傳輸的資料cast成char*給send就可以了。
這邊要傳檔的話,會建議您使用struct來傳那些資料,這樣在處理上也會比較方便。至於要怎麼把struct丟給send用的話,一樣用cast (char*)就可以了。
因為最近被壓榨的很嚴重,所以就沒辦法提供sample了。
希望對您有幫助