C#如何实现网口通讯?

作者&投稿:胥俘 (若有异议请与网页底部的电邮联系)
C# 如何实现外网通信?~

你需要一个公网 IP或者将你的路由器开启端口映射让人可以在其他地方访问这个IP地址

网口通迅啊,你的意思是通过网络和别的计算机通信吗?如果是的话那就是socket通信了,我给你个例子看看
服务器端:
try
{
int port = 2000;
string host = "176.64.158.112";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类
s.Bind(ipe);//绑定2000端口
s.Listen(0);//开始监听
ShowMessage("Waitforconnect");
while (true)
{
Socket temp = s.Accept();//为新建连接创建新的Socket。
ShowMessage("Getaconnect from " + temp); //this.Invoke(new ShowMes(ShowMessage), "Getaconnect");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes);
ShowMessage(String.Format("ServerGetMessage:{0}", recvStr));//this.Invoke(new ShowMes(ShowMessage), String.Format("ServerGetMessage:{0}", recvStr)); //把客户端传来的信息显示出来
string sendStr = "Ok!ClientSendMessageSucessful!";
byte[] bs = Encoding.ASCII.GetBytes (sendStr);
temp.Send(bs, bs.Length, 0);//返回客户端成功信息
}
//temp.Close();
//s.Close();
}
catch (ArgumentNullException e)
{
ShowMessage(String.Format("ArgumentNullException:{0}", e));
}
catch (SocketException e)
{
ShowMessage(String.Format("SocketException:{0}", e));
}
Console.WriteLine("PressEntertoExit");
客户端:
try
{
Socket c;
int port = 2000;
string host = "176.64.158.112";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndPoint实例
c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket
ShowMessage("Conneting...");
c.Connect(ipe);//连接到服务器
string sendStr = "hello!This is a socket test";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
ShowMessage("SendMessage");
c.Send(bs, bs.Length, 0);//发送测试信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
if (bytes <= 0)
break;
recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes);
ShowMessage(String.Format("ClientGetMessage:{0}", recvStr));//显示服务器返回信息
sendStr = "hello!This is a socket test";
bs = Encoding.ASCII.GetBytes(sendStr);
ShowMessage("SendMessage");
c.Send(bs, bs.Length, 0);//发送测试信息
Thread.Sleep(100);
c.Close();
}
catch (ArgumentNullException e)
{
ShowMessage(String.Format("ArgumentNullException:{0}", e));
}
catch (SocketException e)
{
ShowMessage(String.Format("SocketException:{0}", e));
}
ShowMessage(String.Format("PressEntertoExit"));

网口通迅啊,你的意思是通过网络和别的计算机通信吗?如果是的话那就是socket通信了,我给你个例子看看
服务器端:
try
{
int port = 2000;
string host = "176.64.158.112";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类
s.Bind(ipe);//绑定2000端口
s.Listen(0);//开始监听
ShowMessage("Waitforconnect");
while (true)
{
Socket temp = s.Accept();//为新建连接创建新的Socket。
ShowMessage("Getaconnect from " + temp); //this.Invoke(new ShowMes(ShowMessage), "Getaconnect");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes);
ShowMessage(String.Format("ServerGetMessage:{0}", recvStr));//this.Invoke(new ShowMes(ShowMessage), String.Format("ServerGetMessage:{0}", recvStr)); //把客户端传来的信息显示出来
string sendStr = "Ok!ClientSendMessageSucessful!";
byte[] bs = Encoding.ASCII.GetBytes (sendStr);
temp.Send(bs, bs.Length, 0);//返回客户端成功信息
}
//temp.Close();
//s.Close();
}
catch (ArgumentNullException e)
{
ShowMessage(String.Format("ArgumentNullException:{0}", e));
}
catch (SocketException e)
{
ShowMessage(String.Format("SocketException:{0}", e));
}
Console.WriteLine("PressEntertoExit");
客户端:
try
{
Socket c;
int port = 2000;
string host = "176.64.158.112";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndPoint实例
c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket
ShowMessage("Conneting...");
c.Connect(ipe);//连接到服务器
string sendStr = "hello!This is a socket test";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
ShowMessage("SendMessage");
c.Send(bs, bs.Length, 0);//发送测试信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
if (bytes <= 0)
break;
recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes);
ShowMessage(String.Format("ClientGetMessage:{0}", recvStr));//显示服务器返回信息
sendStr = "hello!This is a socket test";
bs = Encoding.ASCII.GetBytes(sendStr);
ShowMessage("SendMessage");
c.Send(bs, bs.Length, 0);//发送测试信息
Thread.Sleep(100);
c.Close();
}
catch (ArgumentNullException e)
{
ShowMessage(String.Format("ArgumentNullException:{0}", e));
}
catch (SocketException e)
{
ShowMessage(String.Format("SocketException:{0}", e));
}
ShowMessage(String.Format("PressEntertoExit"));

网络TCP通讯通常使用Socket(套接字)字的形式。

关于具体怎么通讯,可以在百度一下“C#网络通讯编程”

买个路由器


朗县15586846361: C#如何实现网口通讯? -
城叙依舒: 网口通迅啊,你的意思是通过网络和别的计算机通信吗?如果是的话那就是socket通信了,我给你个例子看看 服务器端: try { int port = 2000; string host = "176.64.158.112"; IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new ...

朗县15586846361: C#如何实现上位机的编程,这里主要是通过网口实现pc机与单片机之间的通信...最好有实际的例子.谢了..
城叙依舒: c#编写上位机,与单片机通讯,一般采用串口通讯:RS232,RS422,RS485. 通过VS .NET中的串口通讯控件即可实现. 如果下位机是类似基于LINUX内核的ARM,可以采用网口,也可以采用串口.

朗县15586846361: 两个com端口如何通讯?c#实现 -
城叙依舒: using System.IO.Ports; 使用里面的SerialPort 类即可实现串口通信.在调试的时候最好使用虚拟串口工具,据我所知现在的电脑都没有提供串口的了.

朗县15586846361: C#如何通过tcpip实现两台计算机通信 -
城叙依舒: 用一个Socket对象监听端口,用另一个Socket对象连接端口,然后就是Read、Write的事了.

朗县15586846361: 在C#中怎样实现串口通讯接受数据 -
城叙依舒: C#实现串口通讯你肯定得用到SerialPort,打开串口连接后,绑定DataReceived事件就能接收数据

朗县15586846361: c#以太网通讯 -
城叙依舒: 那就是普通的socket了,比串口要复杂一些,你搜索一下 wpf socket就可以找到不少示例.

朗县15586846361: C#编程实现串口通讯例程
城叙依舒: private void button1_Click(object sender, EventArgs e){serialPort1.PortName = "COM1";serialPort1.BaudRate = 9600;serialPort1.Open();byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);string str = Convert.ToBase64String(data);...

朗县15586846361: C#编程实现串口通讯例程 -
城叙依舒: C#串口操作之读取串口数据:try { axMSComm2.CommPort = 1i; axMSComm2.InputMode = MSCommLib.InputModeConstants.comInputModeBinary; //用于设置或返回传输数据的类型, //此例程是通过Input属性以二进制方式检取回数据 ...

朗县15586846361: C#怎么内网穿透,实现非局域网的通信 -
城叙依舒: 1:你要有一个通信双方都能访问的IP地址,具体分为两种情况:A你有公网的服务器IP;B你有内网的IP,并且能映射到公网的端口上.2:用1所述的IP来建立侦听,其他的要聊天的机器来连接1所述的IP地址的端口上的侦听服务.3:1所述额侦听服务来对对应要聊天的IP来转发或者广播.

朗县15586846361: 用C#实现UDP异步通信!! -
城叙依舒: 第一步:定义双方通讯端口,如本机使用12345(int iPort)端口作为监听端口进行数据的接收第二步:建立Udp对象,UdpClient Recv = UdpClient(iPort);第三步:建立接收的DevIP,IPEndPoint DevIP= new IPEndPoint(IPAddress.Any, 0);第四步...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网