如果我运行服务器应用程序。 发生异常:在Dinle.Start()上

System.Net.SocketException-每个套接字地址(协议/网络地址/端口)仅允许使用一种

我该如何解决这个错误?

替代文字 Server.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace Server
{
    public partial class Server : Form
    {
        Thread kanal;
        public Server()
        {
            InitializeComponent();

            try
            {
                kanal = new Thread(new ThreadStart(Dinle));
                kanal.Start();
                kanal.Priority = ThreadPriority.Normal;
                this.Text = "Kanla Çalıştı";
            }
            catch (Exception ex)
            {
                this.Text = "kanal çalışmadı";
                MessageBox.Show("hata:" + ex.ToString());
                kanal.Abort();
                throw;
            }
        }

        private void Server_Load(object sender, EventArgs e)
        {
            Dinle();
        }
        private void btn_Listen_Click(object sender, EventArgs e)
        {

            Dinle();
        }

        void Dinle()
        {
          //  IPAddress localAddr = IPAddress.Parse("localhost");
            // TcpListener server = new TcpListener(port);
           // server = new TcpListener(localAddr, port);
            //TcpListener Dinle = new TcpListener(localAddr,51124);
            TcpListener Dinle = new TcpListener(51124);
            try
            {

                while (true)
                {
                   

Dinle.Start();

Exception is occured. Socket Baglanti = Dinle.AcceptSocket(); if (!Baglanti.Connected) { MessageBox.Show("Baglanti Yok"); } else { TcpClient tcpClient = Dinle.AcceptTcpClient(); if (tcpClient.ReceiveBufferSize > 0) { byte[] Dizi = new byte[250000]; Baglanti.Receive(Dizi, Dizi.Length, 0); string Yol; saveFileDialog1.Title = "Dosyayi kaydet"; saveFileDialog1.ShowDialog(); Yol = saveFileDialog1.FileName; FileStream Dosya = new FileStream(Yol, FileMode.Create); Dosya.Write(Dizi, 0, Dizi.Length - 20); Dosya.Close(); listBox1.Items.Add("dosya indirildi"); listBox1.Items.Add("Dosya Boyutu=" + Dizi.Length.ToString()); listBox1.Items.Add("İndirilme Tarihi=" + DateTime.Now); listBox1.Items.Add("--------------------------------"); } } } } catch (Exception ex) { MessageBox.Show("hata:" + ex.ToString()); } } } }

#1楼 票数:1 已采纳

TcpListener.Start被多次调用。

1-在服务器构造函数中启动线程时调用
2-通过调用Server_Load事件处理程序中的Dinle
3-再一次,如果您单击btn_Listen_Click事件处理程序中的按钮

我并不声称完全了解您要做什么,但是我认为这可以简化。

首先,您应该创建并启动一次侦听器,让我们说一下代码何时开始运行。 之后,您可以进入一个循环,该循环调用AcceptTcpClient接受连接并处理通信。

您似乎还混用了不需要的Socket和TcpClient。 看一下以下内容,作为使用TcpListener和TcpClient的基本示例。

http://msdn.microsoft.com/zh-cn/library/system.net.sockets.tcplistener.aspx

  ask by Penguen translate from so

未解决问题?本站智能推荐:

3回复

如何将客户端文件传输到服务器?

我尝试从服务器接收文件,但在server.Start()上给我错误 错误:尝试以不允许访问套接字的方式访问套接字,该 如何解决?
3回复

如何获得3G调制解调器的IP地址?

我的GPRS调制解调器有一张SIM卡。 它可以连接Web。 Web服务给它一个ip号码。 我需要它。 像这样: http : //www.your-ip-address.com/ 我该怎么做C#?
5回复

TCP客户端/服务器映像传输

我正在尝试使用TCP套接字发送图像。 客户端毫无问题地连接到服务器,并开始接收数据。 问题是,当我尝试使用FromStream()方法将流转换为图像时,出现OutOfMemory异常。 谁能帮我吗? 真的很重要! 这是代码; 客户片段 服务器片段 非常感谢
2回复

在网络文件中的控制台应用程序中需要此C#代码的说明[关闭]

谁能解释一下这部分代码,因为我想用网络文件中的此代码构建一个控制台应用程序(以使服务器连接到移动游戏),并且我想知道它的含义。
3回复

如何解决'...是'类型',在给定的上下文中无效? (C#)

以下代码生成错误: 错误:'CERas.CERAS'是'type',在给定的上下文中无效 为什么会出现此错误?
2回复

永久监听端口。 如果文件在我的流中,请获取文件。 如何?

我写了2个客户端和服务器程序。 客户端发送文件也服务器监听端口,而不是获取文件。但是我需要我的服务器应用程序必须永久监听51124端口。 如果我的信息流中有文件,请显示一个消息框“您的信息流中有文件”,然后显示“保存文件”对话框。 但是我的服务器应用程序处于“无限循环”状态。 1)每
5回复

我怎么能用.NET学习我的客户端IP?

我需要从whatismyip.com我的客户端IP。 但是我认为正则表达式模式不正确? 你能帮我这个模特吗?
1回复

尝试在Visual C#中添加新连接时,如何解决事件日志已满错误?

我想在用Visual C#2008 Express编写的项目中为SQL数据库添加新连接。 但是,当我在数据库资源管理器中单击“添加连接”时,看到此错误: 事件日志文件已满 请帮我。