我的一个小domo希望大家帮我改改~!报错:
通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
这个是发送端~!!!
private void SocketSend()
{
System.Net.Sockets.Socket SendSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),80);
FileStream fileSteam = new FileStream(Server.MapPath("myFile.txt"),FileMode.OpenOrCreate,FileAccess.Read);
Byte[] fsSize = new byte[fileSteam.Length-1];
BinaryReader reader = new BinaryReader(fileSteam);
reader.Read(fsSize,0,(int)fileSteam.Length-1);SendSocket.Connect(endPoint);SendSocket.Send(fsSize);fileSteam.Close();SendSocket.Shutdown(SocketShutdown.Send);SendSocket.Close();
}
通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
这个是发送端~!!!
private void SocketSend()
{
System.Net.Sockets.Socket SendSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),80);
FileStream fileSteam = new FileStream(Server.MapPath("myFile.txt"),FileMode.OpenOrCreate,FileAccess.Read);
Byte[] fsSize = new byte[fileSteam.Length-1];
BinaryReader reader = new BinaryReader(fileSteam);
reader.Read(fsSize,0,(int)fileSteam.Length-1);SendSocket.Connect(endPoint);SendSocket.Send(fsSize);fileSteam.Close();SendSocket.Shutdown(SocketShutdown.Send);SendSocket.Close();
}
解决方案 »
- G3传真文件的怎样打开,有什么工具可以使用,或者用c#实现打开?
- C#是不是将来做网站的比较多?
- 谁有.Net录音控件啊,有源码最好,急...
- 帮忙优化下这个采集代码
- 请问vb.net里的asc函数对应c#里是什么
- 哪位大哥可以帮我运行一个C#开发的.net Remoting程序(要求CPU为2.4GHZ以上)
- 那位大侠帮我吧这个ASP代码转成C#.NET吧!感谢。。。。
- 怎样实现树型的下拉列表
- 菜鸟提问关于数据库?
- 高手指点:怎样在我自己写的toolbar里扑获顶层窗体中的键盘按键事件。我想实现工具栏的快捷键的功能。
- 请问如何判断一个字符串中只包含一个字符
- 初学c#向sql 添加数据 怎么都不成功 望高人指点
private void SendReceiveData()
{
System.Net.Sockets.Socket receiveSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint hostPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),80);
receiveSocket.Bind(hostPoint);
receiveSocket.Listen(2);Byte[] recData = new byte[300000000];
System.Net.Sockets.Socket hostSocket = receiveSocket.Accept();
hostSocket.Receive(recData);if(hostSocket.Receive(recData)>0)
{
this.LableData.Text = "网页在" + DateTime.Now.ToString()
+"接受的数据大小为:" + hostSocket.Receive(recData).ToString();}FileStream fileStream = new FileStream(Server.MapPath("myNewFile.dat"),FileMode.OpenOrCreate);
BinaryWriter writer = new BinaryWriter(fileStream);
writer.Write(recData,0,recData.Length-1);
fileStream.Close();
hostSocket.Shutdown(SocketShutdown.Receive);
hostSocket.Close();
}receiveSocket.Bind(hostPoint);报错~!(通常每个套接字地址(协议/网络地址/端口)只允许使用一次。)
不要用80端口。换一个1980
SendSocket.Connect(endPoint);
一般用户自定义端口都用2000后,反正就是不要与常用的那些冲突。而且你客户端进行连接时,报错【由于目标机器积极拒绝,无法连接。】的话,是你服务端没有打开这个端口,或者打开了端口,但是服务端有防火墙。
是你代码问题
你不要先急着关闭socket
端口 是 保持一样·!
你把接收端放到另一台计算机上 IP也要改过来或者接收端用TCPListener直接监听。如TcpListener mylisten=new TcpListener(800);
Socket t_server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
t_server.Bind(new IPEndPoint(IPAddress.Any, 2222));
t_server.Listen(2);
FileStream file = new FileStream (@"d:\1.txt",FileMode.Create );
byte[] buffer = new byte[1024];
Socket tmp = t_server.Accept();
int i =0;
while ((i = tmp.Receive(buffer)) != 0)
{ file.Write(buffer, 0, i);
}
file.Close();发送端:
Socket t_client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
t_client.Connect("127.0.0.1", 2222);
t_client.SendFile(@"d:\2.txt");
t_client.Close();
朋友~!你给出的代码好像也不行哦~!!
先运行发送端 运行到 t_client.Connect() 端口问题 ; 这个的时候就报错啦~!!由于目标机器积极拒绝,无法连接。
这个endpoint的主机地址最好用Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
有时候用回环地址会有问题 你应该尽量模拟出是两台不同的主机
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
using System.Net;
using System.Net.Sockets;namespace TestService
{
public partial class Service : Form
{
public Service()
{
InitializeComponent();
}
Thread ServiceStart = null;
TcpListener listerner = null; private void Startbtu_Click(object sender, EventArgs e)
{
this.Startbtu.Enabled = false;
this.StopBtu.Enabled = true;
ServiceStart = new Thread(new ThreadStart(Start));
ServiceStart.Start(); }
void Start()
{ listerner = new TcpListener(8300);
listerner.Start();
while (true)
{
TcpClient client = null; while (listerner.Pending())
{
client = listerner.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(new WaitCallback(Process), client);
} Thread.Sleep(100);
}
}
void Process(object state)
{
TcpClient client = (TcpClient)state;
StreamReader reader = null; try
{
Stream stream = client.GetStream();
reader = new StreamReader(stream);
//StreamWriter writer = new StreamWriter(stream);
this.textBoxShow.Text = reader.ReadLine();
}
finally
{
reader.Close();
client.Close();
}
} private void StopBtu_Click(object sender, EventArgs e)
{
this.Startbtu.Enabled = true;
this.StopBtu.Enabled = false;
this.ServiceStart.Abort();
this.ServiceStart = null;
this.listerner.Stop();
this.listerner = null;
}
}
}
//这个是service端的
/**/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.IO;namespace TestClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void buttonSend_Click(object sender, EventArgs e)
{
TcpClient client = new TcpClient("localhost", 8300);
StreamWriter writer = null;
// StreamReader reader = null;
string sInput = this.textBoxInput.Text; try
{
writer = new StreamWriter(client.GetStream());
writer.WriteLine(sInput);
writer.Flush(); }
finally
{
writer.Close();
client.Close();
}
}
}
}
//这个是client端的,刚写的,可以用,试一下,把stream改成你对应的filestream就行