C# socket发送数据问题

.Net技术 码拜 9年前 (2016-06-05) 1902次浏览
本人在一个窗体中设置IP地址和端口号,如下图:连接是成功,在另一个窗体中发送数据,但是就是无法发送,第二个窗体中的
 if (SetIP.newclient != null)
{
int i = SetIP.newclient.Send(data);
}

这里 if 就是进不去,问一下这个怎么解决呢?
窗体1:
C# socket发送数据问题
窗体2:
C# socket发送数据问题
窗体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)
{

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);
}
}
}


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# socket发送数据问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)