本人在一个窗体中设置IP地址和端口号,如下图:连接是成功,在另一个窗体中发送数据,但是就是无法发送,第二个窗体中的
if (SetIP.newclient != null)
{
int i = SetIP.newclient.Send(data);
}
这里 if 就是进不去,问一下这个怎么解决呢?
窗体1:
窗体2:
窗体1代码如下:
if (SetIP.newclient != null)
{
int i = SetIP.newclient.Send(data);
}
这里 if 就是进不去,问一下这个怎么解决呢?
窗体1:
窗体2:
窗体1代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace frmsocket { public partial class frmSetIP : Form { public Socket newclient; public bool Connectedtest; public delegate void MyInvoke(string str); public frmSetIP() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } public void Connect() { byte[] data = new byte[1024]; newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //构造socket对象 string ipadd = serverIP.Text.Trim(); //输入IP地址 int port = Convert.ToInt32(serverPort.Text.Trim()); //输入端口号 IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port); //表示网络端点 try { newclient.Connect(ie); //与服务器连接 Connectedtest = true; } catch (SocketException e) { MessageBox.Show("连接服务器失败 " + e.Message); return; } } public void DisConnect() //断开连接 { newclient.Shutdown(SocketShutdown.Both); newclient.Close(); } private void ConnectButton_Click(object sender, EventArgs e) { Connect(); ConnectButton.Enabled = false; DisableConnectButton.Enabled = true; frmSeRe SeRe = new frmSeRe(); SeRe.Show(); } private void DisableConnectButton_Click(object sender, EventArgs e) { DisConnect(); ConnectButton.Enabled = true; } } }
窗体2代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace frmsocket { public partial class frmSeRe : Form { frmSetIP SetIP = new frmSetIP(); public frmSeRe() { InitializeComponent(); } private void SendButton_Click(object sender, EventArgs e) { int m_length = SendBox.Text.Length; byte[] data = new byte[m_length]; data = Encoding.UTF8.GetBytes(SendBox.Text); if (SetIP.newclient != null) { int i = SetIP.newclient.Send(data); } } } }
解决方案
100
public partial class frmSeRe : Form
{
frmSetIP SetIP;
public frmSeRe(frmSetIP SetIP)
{
InitializeComponent();
this.SetIP = SetIP;
}
private void SendButton_Click(object sender, EventArgs e)
{
{
frmSetIP SetIP;
public frmSeRe(frmSetIP SetIP)
{
InitializeComponent();
this.SetIP = SetIP;
}
private void SendButton_Click(object sender, EventArgs e)
{
int m_length = SendBox.Text.Length;
byte[] data = new byte[m_length];
data = Encoding.UTF8.GetBytes(SendBox.Text);
if (SetIP.newclient != null)
{
int i = SetIP.newclient.Send(data);
}
}
}