求大神帮我看看程序,
我想实现在form4上通信,socket,tcp,按键1发送open,按键2发送close但是我的有问题。。哎
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;
using System.Net.Sockets;
using System.Threading;
using System.Net;
namespace hh3
{
public partial class Form3 : Form
{
private static byte[] result = new byte[1024];
private static int myProt = 8080; //端口
static Socket serverSocket;
//private Thread td;
//private TcpListener tcpListener;
//private static string message = "";
//private IPAddress MyIP = IPAddress.Parse("127.0.0.1");
public Form3()
{
InitializeComponent();
timer1.Enabled = true;
timer1.Interval = 10;
}
private void Form3_Load(object sender, EventArgs e)
{
//td = new Thread(new ThreadStart(this.StartListen));
string hostName = Dns.GetHostName();//本机名
IPAddress ip = IPAddress.Parse("172.26.228.1");
System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6
//IPAddress ip = IPAddress.Parse(addressList);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ip, myProt)); //绑定IP地址:端口
serverSocket.Listen(10); //设定最多10个排队连接请求
//Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());
//通过Clientsoket发送数据
}
private static void ReceiveMessage(object clientSocket)
{
Socket myClientSocket = (Socket)clientSocket;
while (true)
{
try
{
//通过clientSocket接收数据
int receiveNumber = myClientSocket.Receive(result);
//Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
myClientSocket.Shutdown(SocketShutdown.Both);
myClientSocket.Close();
break;
}
}
}
private static void ListenClientConnect1()
{
Socket clientSocket = serverSocket.Accept();
clientSocket.Send(Encoding.ASCII.GetBytes("open"));
Thread receiveThread1 = new Thread(ReceiveMessage);
receiveThread1.Start(clientSocket);
receiveThread1.Abort();
//clientSocket.Close();
}
private static void ListenClientConnect2()
{
Socket clientSocket = serverSocket.Accept();
clientSocket.Send(Encoding.ASCII.GetBytes("close"));
Thread receiveThread2 = new Thread(ReceiveMessage);
receiveThread2.Start(clientSocket);
receiveThread2.Abort();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
DateTime time = DateTime.Now;
textBox3.Text = time.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
// button1.Enabled = false;
//button2.Enabled = true;
Thread myThread1 = new Thread(ListenClientConnect1);
myThread1.Start();
myThread1.Abort();
//Console.ReadLine();
}
private void button2_Click(object sender, EventArgs e)
{
//button1.Enabled = true;
//button2.Enabled = false;
Thread myThread2 = new Thread(ListenClientConnect2);
myThread2.Start();
myThread2.Abort();
// Console.ReadLine();
}
}
}