聊城网站建设服务好,页面设置,扬中网站建设包括哪些,方象科技的服务范围TCP/IP#xff08;传输控制协议/互联网协议#xff09;是一组用于在网络上进行通信的通信协议。它是互联网和许多局域网的基础#xff0c;为计算机之间的数据传输提供了可靠性、有序性和错误检测。在软件开发中#xff0c;TCP/IP 通信通常用于实现网络应用程序之间的数据交…TCP/IP传输控制协议/互联网协议是一组用于在网络上进行通信的通信协议。它是互联网和许多局域网的基础为计算机之间的数据传输提供了可靠性、有序性和错误检测。在软件开发中TCP/IP 通信通常用于实现网络应用程序之间的数据交换。 基于 TCP/IP 的通信通常涉及以下几个步骤 1、建立连接 通信双方通过套接字socket建立连接。在 C# 中你可以使用 TcpClient 类来创建一个 TCP 客户端并使用 TcpListener 类来创建一个 TCP 服务器端。 2、发送和接收数据 一旦连接建立通信双方可以通过套接字发送和接收数据。在 C# 中你可以使用 NetworkStream 类来发送和接收数据。 3、关闭连接 在通信完成后通信双方可以通过关闭套接字来断开连接释放资源。 代码展示
using System;
using System.Net;
//引入支持socket的命名空间
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;namespace TCPIP通信 {public partial class Form1 : Form {public Form1() {InitializeComponent();}//声明socket需要支持的对象public Socket ServerSocket;//监听public Socket SocketAccept;//绑定客户端public Socket socket;//和客户端通信#region 开启监听Thread t1;//监听Thread t2;//接收//开启监听(监听的是客户端的链接)private void button1_Click(object sender, EventArgs e) {//实例化socket对象//参1绑定一个ip地址参2数据流的格式参3协议ServerSocket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//准备ip对象绑定ip地址IPAddress ip IPAddress.Parse(textBox1.Text);//创建端口号int port Convert.ToInt32(textBox2.Text);//把输入的ip和端口传入到连接中尝试链接IPEndPoint iPEndPoint new IPEndPoint(ip, port);try {//开启服务器的时候很容易报错所有做异常处理ServerSocket.Bind(iPEndPoint);//开启监听(参数是监听的数量)ServerSocket.Listen(5);//禁用按钮避免重复监听button1.Enabled false;//监听是持续的所以要在分线程中进行t1 new Thread(Listen);//设置成后台线程t1.IsBackground true;//分线程中开始对socket监听t1.Start(ServerSocket);} catch (Exception ex) {MessageBox.Show(ex.Message);}}private void Listen(object o) {SocketAccept o as Socket;try {//因为要持续监听所以用了while循环while (true) {//阻塞线程直到有客户端进来的时候才会往下执行socket SocketAccept.Accept();//表示有客户端进来了需要显示到textBox上面AddMsg(DateTime.Now.ToString(yyyy-mmddHHMMSS) : socket.RemoteEndPoint 链接成功);//换行操作AddMsg(\r\n);//开启第二个线程用来检测客户端传递过来的消息t2 new Thread(Receive);t2.IsBackground true;t2.Start(socket);}} catch (Exception ex) {MessageBox.Show(ex.Message);}}//接收消息的方法private void Receive(object obj) {socket obj as Socket;try {while (true) {//定义字节接收数据byte[] buffer new byte[1024 * 1024 * 2];int r socket.Receive(buffer);if (r 0) {break;}string msg Encoding.Default.GetString(buffer);AddMsg(他说 msg);AddMsg(\r\n);}} catch (Exception ex) {MessageBox.Show(ex.Message);}}private void AddMsg(string msg) {//异步处理否则没办法刷新uirichText.BeginInvoke(new Actionstring(str {richText.Text msg;}), msg);}#endregion//发送消息private void sendBtn_Click(object sender, EventArgs e) {//首先获取要发送的消息string str sendText.Text;byte[] buffer Encoding.Default.GetBytes(str);try {socket.Send(buffer);AddMsg(我说 str);AddMsg(\r\n);sendText.Clear();} catch (Exception ex) {MessageBox.Show(ex.Message);}}//关闭客户端private void button2_Click(object sender, EventArgs e) {if (socket ! null) {//禁掉socket的接收和发送socket.Shutdown(SocketShutdown.Both);socket.Close();t2.Abort();}ServerSocket.Close();SocketAccept.Close();t1.Abort();//打开监听的按钮button1.Enabled true;}}
}