全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1509
推到 Plurk!
推到 Facebook!

關於Server和Client間的傳黨不完整

尚未結案
gdogway
一般會員


發表:2
回覆:0
積分:0
註冊:2010-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-07-18 20:56:53 IP:111.184.xxx.xxx 訂閱
各位大大好  小的因為初接觸網路程式的相關設計

遭遇了下面的問題 苦無解決辦法 在此發文 希望各位大大能幫忙和指教!!

小的最近因專題需要 用C#寫了Server和Client的主控台應用程式

主要目的是要利用這兩個程式 在之間傳送約莫在500kb以下的圖檔

但困擾我的是....在自己電腦做本機測試時 也就是Client端的IP輸入的是127.0.0.1

Port則是我自己所設的3838 Server和Client間的傳收圖檔是沒問題的!!

但將Server的程式放到老師所給的Server上時!!(有固定IP) 卻發生不管如何

Client要將圖檔傳過去都會傳送失敗的情況 發生的情況有:例如一張圖檔為200kb 但Server那邊收到有時為0kb

有時候7Xkb 有時候8Xkb 除了有幾次是直接將Client端連接上數據機出來的第一條線(也就是不透過hub之類的硬體設備)

有成功的完全傳輸外 剩下的幾乎每次Run程式都會出現檔案傳送不完整的情況

以下附上程式碼 以及我所編寫的程式碼檔案給大大們參考 希望大大們能用力的指正我

哪裡有粗心或著觀念有錯誤!! 這問題已經困擾我超久了....

Server的程式碼:


[code c#]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace practiceser1
{
class Program
{
static void Main(string[] args)
{

IPAddress serverIP = IPAddress.Parse("127.0.0.1");
TcpListener serverlisten=new TcpListener(serverIP,3838);


Console.WriteLine("測試Server成功開始");
Console.WriteLine("等待Client連接......");



while (true)
{
serverlisten.Start();
TcpClient serversocket = serverlisten.AcceptTcpClient();
NetworkStream serverstream = serversocket.GetStream();
Console.WriteLine("連線成功");
Console.WriteLine("開始準收檔案333.jpg.....");

byte[] readfile = new byte[1024*15000];
int filelen;

filelen=serverstream.Read(readfile, 0,readfile.Length);

Console.WriteLine(filelen);


FileStream fa = new FileStream("new333.jpg", FileMode.Create, FileAccess.Write);


fa.Write(readfile, 0, filelen);

serverlisten.Stop();

}
}
}
}
[/code]
Client的程式碼:

[code c#]
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace praticecli1
{
class Program
{
static void Main(string[] args)
{
//輸入Server的IP和Port
Console.WriteLine("請輸入Server的IP");
string hostname = Console.ReadLine();
Console.WriteLine("請輸入Server的連接埠");
int connectport = int.Parse(Console.ReadLine());

IPHostEntry hoste = Dns.Resolve(hostname);
IPEndPoint server = new IPEndPoint(hoste.AddressList[0], connectport);
//建立一個TCP的物件
TcpClient clienttcp = new TcpClient();


//和Server建立連線
clienttcp.Connect(server);

Console.WriteLine("連線成功!!");

Console.WriteLine("開始傳檔333.jpg.....");
NetworkStream netclientstream = clienttcp.GetStream();


FileStream fs = new FileStream("333.jpg", FileMode.Open);
BinaryReader br = new BinaryReader(fs);
byte[] sendfile = new byte[fs.Length];
for (int i = 0; i < fs.Length; i )
sendfile[i] = br.ReadByte();
Console.WriteLine(fs.Length);
netclientstream.Write(sendfile, 0, (int)fs.Length);

clienttcp.Close();








}
}
}
[/code]

系統時間:2017-12-14 8:40:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!