局域网之间的socket 只能局域网通讯该如何完成

没有更多推荐了,
不良信息举报
举报内容:
局域网内主机之间Socket通信实现
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!没有更多推荐了,
不良信息举报
举报内容:
Socket在局域网通信中应用
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!今天实现了一个局域网通信的小例子,上来记录一下,代码不成熟,勿拍。
这是我本机客户端:
这是我虚拟机的客户端。
我为他们分配了静态IP,这样就可以实现局域网通信了。注意代码中必须把监视线程的IsBackground属性设置为false,这样关闭窗口时才可以同时将此线程关闭。
默认是true。
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.L
using System.N
using System.Net.S
using System.T
using System.T
using System.Threading.T
using System.Windows.F
namespace WinFormChat1
public partial class Form1 : Form
public static readonly int Socket_Buffer_Len = 8192; // 8k
string myIP = "172.16.1.48";
string oppositeIP = "172.16.1.211";
string nickName = "你叫啥";
public Form1()
InitializeComponent();
private void btnSend_Click(object sender, EventArgs e)
string sendMsg = this.nickName + ":" + msgBox.T
//send message
chatBox.Text += "\r\n" + sendM
InvokeSocket(sendMsg);
Thread workSocket = null;
private void button1_Click(object sender, EventArgs e)
this.nickName = this.nickName1.T
this.myIP = this.txtMyIP.Text.Trim();
this.oppositeIP = this.txtOpIP.Text.Trim();
workSocket = new Thread(new ThreadStart(ThreadSocketWork));
workSocket.IsBackground = true;
workSocket.Start();
void ThreadSocketWork()
//自己IP收信
IPAddress ip = IPAddress.Parse(myIP);
Socket m_serverListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
m_serverListenSocket.Bind(new IPEndPoint(ip, 10035));
m_serverListenSocket.Listen(100);
byte[] result = new byte[Socket_Buffer_Len];
while (true)
Socket clientSocket = m_serverListenSocket.Accept();
int iCount = clientSocket.Receive(result);
if (iCount & 0)
string msgRcv = Encoding.UTF8.GetString(result, 0, iCount);
this.BeginInvoke(new Action(() =& this.chatBox.Text += "\r\n" + msgRcv));
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
private bool InvokeSocket(string data)
//发到对方IP上
IPAddress ip = IPAddress.Parse(oppositeIP);
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(ip, 10035));
catch (Exception ex)
//TraceUtility.WriteLine("Failed to connect to socket on {0} : {1}, {2}",
ConfigurationManager.AppSettings["AgentServerIP"], ConfigurationManager.AppSettings["AgentServerPort"], ex.Message);
return false;
bool result = true;
clientSocket.Send(Encoding.UTF8.GetBytes(data));
catch (System.Exception ex)
//TraceUtility.WriteLine("Failed to send socket data to {0} : {1}, {2}",
ConfigurationManager.AppSettings["AgentServerIP"], ConfigurationManager.AppSettings["AgentServerPort"], ex.Message);
result = false;
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
阅读(...) 评论()socket实现了局域网内部的通信,如果想要进行两个不同局域网之间的通信,应该怎么办呢?具体代码怎么办呀_百度知道
socket实现了局域网内部的通信,如果想要进行两个不同局域网之间的通信,应该怎么办呢?具体代码怎么办呀
我有更好的答案
代码改ip就行了
让路由器把内网ip地址广播到外网 用这个外网地址建立连接
采纳率:31%
这个需要打洞了,需要tcp打洞或者udp打洞
网络层解决,如在路由中设置路由
为您推荐:
其他类似问题
socket的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 socket 局域网广播 的文章

 

随机推荐