求大神帮我看看程序,

torrosbest 2016-03-29 02:20:20
我想实现在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();

}

}
}
...全文
79 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
torrosbest 2016-03-29
  • 打赏
  • 举报
回复
就是现在和网络调试助手连接后只能发一次数据,第二次就要断开重新连接

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧