2 zcguoji zcguoji 于 2016.01.13 19:48 提问

c#socket实验点对点通信的程序时通信不成功报错

刚学习用c#的socket来通信,在同一个局域网的两台电脑进行测试,出现不能链接的情况,如图所示,请问是什么原因
界面如下:图片说明
报错如下:图片说明

代码如下

 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.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;

namespace _508P2PServer
{
    public partial class Form1 : Form
    {
        Thread td;
        TcpListener tcpl;
        static string message = "";
        public Form1()
        {
            InitializeComponent();
        }
        void StartListen()
        {
            tcpl = new TcpListener(888);
            tcpl.Start();
            while(true)
            {
                TcpClient tclient = tcpl.AcceptTcpClient();
                NetworkStream netstream = tclient.GetStream();
                byte[] mbyte = new byte[1024];
                int i = netstream.Read(mbyte,0,mbyte.Length);
                message = Encoding.Default.GetString(mbyte,0,i);
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            td = new Thread(new ThreadStart(this.StartListen));
            td.Start();
            timer1.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                IPAddress[] ip = Dns.GetHostAddresses(Dns.GetHostName());
                string strmes = this.textBox2.Text + ip[0].ToString() + DateTime.Now.ToLongTimeString() + "\n" + richTextBox2.Text + "\n";
                TcpClient client = new TcpClient(textBox1.Text, 888);
                NetworkStream netstream = client.GetStream();
                StreamWriter streamw = new StreamWriter(netstream, Encoding.Default);
                streamw.Write(strmes);
                streamw.Flush();
                streamw.Close();
                client.Close();
                richTextBox1.AppendText(strmes);
                richTextBox1.ScrollToCaret();
                richTextBox2.Clear();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (message != "")
            {
                richTextBox1.AppendText(message);
                richTextBox1.ScrollToCaret();
                message = "";
            }
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (this.tcpl != null)
            {
                tcpl.Stop();

            }
            if (td != null)
            {
                if(td.ThreadState==ThreadState.Running)
                {
                    td.Abort();
                }
            }
        }

    }
}

请问问题出在哪

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.13 19:54

两边防火墙都关掉,然后ping下看通不通。通了再试你的程序,不行换一个端口。

zcguoji
zcguoji ping都没问题的
2 年多之前 回复
guwei4037
guwei4037   Ds   Rxr 2016.01.13 19:54

这个需要单步调试你的程序了,出现这个错误一般是服务端不提供服务了,即服务端发生了异常。

save4me
save4me   Ds   Rxr 2016.01.13 21:54

你再查一下你的两台电脑的IP地址,你截图上显示的你是连接到192.168.0.1,这个IP一般是路由器的,当然有些路由器使用的是其他的IP,只是确认一下。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
1-2 实验2 点对点通信
1、实验内容:两个ZigBee节点进行点对点通信,ZigBee节点2(终端节点EndDevice,稍后,下载EndDeviceEB里的代码)发送“LED”三个字符,ZigBee节点1(协调器节点Coordinator,稍后,下载CoordinatorEB里的代码)接受数据后,判断接受到的数据是否为“LED”,是,则使板子上的LED灯闪烁。 2、简介 无线传感器主要有三种类型:协调器、路由器
linux下使用socket实现点对点通信的实验(server to client)
服务端监听两个端口,然后由客户端连接,没端都有一个发送线程和接受线程专门负责发送和接受 服务端流程:创建socket,绑定port(要先填充网络地址结构体),监听port,accept连接,然后进行数据传输 客户端流程:创建socket,填充服务端网络地址,连接服务端对应端口,然后进行数据传输 服务端代码 #include #include #include #incl
计算机网络_点对点通信实验报告及代码
计算机网络课程 点对点通信实验报告及代码 C++
Zigbee 点对点通信
 #include "OSAL.h" #include "AF.h" #include "ZDApp.h" #include "ZDObject.h" #include "ZDProfile.h" //#include "Common.h" #include "GenericApp.h" #include "DebugTrace.h" #if !defined( WIN32
试验三:MicaZ-TinyOS2.x平台下点对点通讯试验-----BlinktoRadio实验
试验三:MicaZ-TinyOS2.x平台下点对点通讯试验 ——BlinktoRadio实验    试验目的:本节介绍TinyOS中的无线通信。能够熟练使用TinyOS支持通信的接口和组件,并且我们可以学习到: 1).TinyOS2.0消息缓存message_t的使用; 2).通过radio发送一个message; 3).接收一个message通过radio。 本实验所需硬件平台:2
利用C#进行Socket通信编程之二:一个实例
    利用晚上这点闲暇时间,写了一个Socket通信的小实例,该实例包含服务器端和客户端。其基本工作流程是:当服务器启动服务以后,客户端进行连接,如果连接成功,则用户可以在发送消息框中输入待发送的消息,然后点击“Send”按钮后向服务器发送消息,服务器在收到消息后立即向该客户端发送接收成功消息。其基本效果如图1.1和图1.2所示(注:下面两幅图于次日补上):图1.1  服务器运行效果图图1.2 
UDP方式点对点通讯
UDP通讯服务器端源代码如下: #include #include #include #include #include #include #include #include /********************************************************************* *filename: si
两个Docker容器之间创建一个点对点的连接
最近在跟着docker_practice 学docker,看到网络部分的创建容器之间点对点的连接示例时。很多命令不知所云(之前没怎么学过linux的网络配置),现在对其中的命令和步骤,逐一进行讲解。示例:创建一个点到点连接 默认情况下,Docker 会将所有容器连接到由 docker0 提供的虚拟子网中。 用户有时候需要两个容器之间可以直连通信,而不用通过主机网桥进行桥接。 解决办法很简单:创
P2P(点到点-点对点)通信实现实例
互联网上的某些知名应用,使用了P2P通信技术。这种技术,可以让没有公网IP的两个用户进行直接的通信。 这是怎么实现的呢? linux_dev_framework软件包中的p2p_server.c及p2p_client.c就是P2P通信的一个实现示例。 linux_dev_framework软件包编译后,生成的程序中,包含p2p_server.exe及p2p_client.exe两个程序。
组通信与点对点通信
通信子(communicator):是指一组可以相互发送消息的进程集合。   集合通信(collective communication):也叫组通信,是指设计通信子中所有进程的通信函数。   点对点通信(point-to-point communication):函数对(两个函数)之间的通信。   集合通信和点对点通信的区别:   1)通信子中的所有进程都必须调用相同的集合通信函