作者Lestant ()
看板C_Sharp
标题[问题] 透过网路传档的问题
时间Sat Dec 8 06:35:56 2007
想写个从手机上传档案到server的程式,
但是没有要利用网页的方式,所以自己试着写个server&client的程式,
但是总是会卡在传送的过程中,但是我不是C#的高手,
透过google和查书,都找不到问题是出在哪,
compiler都有过,都是就是不能传成功,只要麻烦板上的高手了,
以下是我的程式:
//Server
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace TCP_Server
{
class Program
{
static void Main(string[] args)
{
TcpListener tcplistener = new TcpListener(2300);
tcplistener.Start();
Console.WriteLine("从2300收取档案");
Socket mysocket = tcplistener.AcceptSocket();
string filetarget = @"c:\test.3gp";
try
{
if (mysocket.Connected)
{
Console.WriteLine("连线成功");
NetworkStream myNetworkstream = new
NetworkStream(mysocket);
FileStream fout = File.OpenWrite(filetarget);
int lngbytes = 1024;
Byte[] myByte = new Byte[lngbytes];
while (myNetworkstream.DataAvailable)
{
myNetworkstream.Read(mybyte, 0, lngbytes);
fout.Write(mybyte, 0, myByte.Length);
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
System.Console.WriteLine();
}
}
}
//Client
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace TCP_Clinet
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TcpClient tcpclient = new TcpClient();
tcpclient.Connect("127.0.0.1", 2300);
NetworkStream myNetworkstream;
myNetworkstream = tcpclient.GetStream();
string filepath = @"c:\sample_50kbit.3gp";
if (myNetworkstream.CanWrite)
{
FileStream fs = File.Open(filepath, FileMode.OpenOrCreate,
FileAccess.Read);
Byte[] myByte = new Byte[4096];
int count = 0;
while ((count = fs.Read(myByte,0,4096)) != 0)
{
myNetworkstream.Write(myByte, 0, count);
}
fs.Close();
}
else
{
textBox1.Text = "no";
}
myNetworkstream.Flush();
myNetworkstream.Close();
}
}
}
红色部分,则是程式出错的地方,
讯息是:
错误的IOException未处理,
无法写入资料至传输连接: 远端主机已强制关闭一个现存的连线。
上google大神找到一些范例,我的写法也差不多,
但是就是不能用,要麻烦板上的高手帮我找个问题在哪了Q_Q
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.177.86