源码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 河南DAM发射机测试软件_网络通信版_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Socket socket;
private Thread thread;
/// <summary>
/// 发起连接请求
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_open_Click(object sender, EventArgs e)
{
IPAddress ip = IPAddress.Parse(txt_ip.Text);//获取IP
IPEndPoint server = new IPEndPoint( ip , Convert.ToInt32(txt_port.Text));//请求连接服务器的ip及端口
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//初始化Socket实例(地址族、套接字类型、传输控制协议)
try
{
socket.Connect(server);
}
catch
{
MessageBox.Show("服务器连接失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
this.btn_open.Enabled = false;
txt_state.Text += "与服务器连接成功\n";
thread = new Thread(new ThreadStart(AcceptMessages));
thread.Start();
}
private void AcceptMessages()
{
while (true)
{
try
{
byte[] RcvByte = new byte[1024];
int size = socket.Receive(RcvByte);
if (size == 0)
{
break;
}
this.txt_recerive.Text += System.Text.Encoding.Unicode.GetString(RcvByte);
socket.Close();
}
catch(Exception ex)
{
this.BeginInvoke(new Action(() =>
{
txt_state.Text += "与服务器断开连接\n";
}));
break;
}
}
}
/// <summary>
/// 发送数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_send_Click(object sender, EventArgs e)
{
string strSendData = txt_send.Text;//获取发送字符串
int i = strSendData.Length;
if (i == 0)
{
return;
}
else
{
i *= 2;
}
byte[] sendBytes = System.Text.Encoding.Unicode.GetBytes(strSendData);
try
{
socket.Send(sendBytes, sendBytes.Length, SocketFlags.None);
}
catch
{
MessageBox.Show("无法发送!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
/// <summary>
/// 关闭连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_closeConn_Click(object sender, EventArgs e)
{
try
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
txt_state.Text += "与主机的的连接断开\n";
thread.Abort();
}
catch
{
MessageBox.Show("尚未与主机连接!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
btn_open.Enabled = true;
}
}
}