本人在一个窗体中设置IP地址和端口号,如下图:连接是成功,在另一个窗体中发送数据,但是就是无法发送,第二个窗体中的

if (SetIP.newclient != null)

{

int i = SetIP.newclient.Send(data);

}

这里 if 就是进不去,问一下这个怎么解决呢?

窗体1:

9f51ac0fd39ad794aca225104f4683dd.png

窗体2:

a5fda116304fc804d32d61aada082fc6.png

窗体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);

}

}

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐