C# 使用Socket对接

简介: C# 使用Socket对接
internal void PrintNew()
{
    //1.创建Socket对象
    Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    IPAddress ip = IPAddress.Parse("xxx.xxx.x.xxx");
    //2.绑定IP和端口
    IPEndPoint endpoint = new IPEndPoint(ip, int.Parse("6000"));
    try
    {
        //这里客户端套接字连接到网络节点(服务端)用的方法是Connect 而不是Bind
        clientSocket.Connect(endpoint);
        //MessageBox.Show("ip连接成功...");
    }
    catch
    {
        MessageBox.Show("与系统连接失败,请检查计算机以及系统(新)!");
    }

    int[] selectRows = gridView1.GetSelectedRows();//获取当前列表行数 
    if (selectRows != null && selectRows.Length > 0)
    {
        StringBuilder builder = new StringBuilder();
        foreach (var row in selectRows)
        {
            if (this.gridView1.GetRowCellValue(row, "MachineNumber") != null)//机器代码
            {
                string Sampleno = "";
                string sampleno = this.gridView1.GetRowCellValue(row, "SampleNO").ToString();//蜡块号
                string[] samplenolist = sampleno.Split(',');
                for (int i = 0; i < samplenolist.Length; i++)
                {
                    if (i == 0)
                    {
                        Sampleno += samplenolist[i].ToString();
                    }
                    else
                    {
                        string[] samplenolistlist = samplenolist[i].ToString().Split('_');
                        for (int j = 0; j < samplenolistlist.Length; j++)
                        {
                            if (j == samplenolistlist.Length - 1)
                            {
                                Sampleno += "_" + samplenolistlist[j].ToString();
                            }
                        }
                    }
                }
                string rocheCode = this.gridView1.GetRowCellValue(row, "MachineNumber").ToString();//机器代码
                if (!string.IsNullOrEmpty(rocheCode))
                {
                    builder.Clear();
                    builder.Append(@"MSH|^~\&|PIS|Lab||BenchMark|");
                    builder.Append(DateTime.Now.ToString("yyyyMMddHHmmss"));
                    builder.Append("||OML^O21|");
                    builder.Append(DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString());
                    builder.Append("|P|2.4|");
                    builder.Append('\r');
                    builder.Append("ORC|NW|");
                    builder.Append(Sampleno);
                    builder.Append("|");
                    builder.Append('\r');
                    builder.Append("OBR|1|");
                    builder.Append(this.gridView1.GetRowCellValue(row, "CaseNO").ToString());
                    builder.Append("||");
                    builder.Append(rocheCode + "^" + this.gridView1.GetRowCellValue(row, "MarkerName").ToString());
                    builder.Append("^STAIN|||||||||||||||||||04926|||||");
                    builder.Append('\r');
                    byte[] sendMsg = Encoding.UTF8.GetBytes(builder.ToString());
                    byte[] bs = new byte[sendMsg.Length + 3];
                    bs[0] = 0x0b;
                    for (int i = 0; i < sendMsg.Length; i++)
                    {
                        bs[i + 1] = sendMsg[i];
                    }
                    bs[bs.Length - 2] = 0x1c;
                    bs[bs.Length - 1] = 0x0d;
                    clientSocket.Send(bs);
                    Thread.Sleep(100);
                }
            }
            else
            {
                MessageBox.Show("无机器码,请联系管理员!", "标签打印", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }
    }
    else
    {
        MessageBox.Show("请选择您要打印记录!", "打印", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    }
    //oGetArgThread.Abort();
    clientSocket.Shutdown(SocketShutdown.Both);
    clientSocket.Close();
}
目录
相关文章
|
6月前
|
数据采集 安全 JavaScript
C#医院手术麻醉信息管理系统源码 对接院内HIS、LIS、PACS
手麻系统的功能涵盖了麻醉临床业务管理、麻醉运营业务管理以及手术进程管理等,实现了将多种麻醉病历文书与医院HIS系统的有效关联,让手术室人员、设备资源和信息资源高度共享;实现了手术安排、各种统计报表等科室管理和科研工作的需求,可借其收集临床数据、进行整合分析,为围术期临床信息、管理、科研提供整体解决方案;该系统的运行,为医护人员提供了流程化、信息化、自动化、智能化的临床业务综合管理。
105 5
|
6月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
282 0
|
1月前
|
C# 开发者
C# 一分钟浅谈:Socket 编程基础
【10月更文挑战第7天】本文介绍了Socket编程的基础知识、基本操作及常见问题,通过C#代码示例详细展示了服务器端和客户端的Socket通信过程,包括创建、绑定、监听、连接、数据收发及关闭等步骤,帮助开发者掌握Socket编程的核心技术和注意事项。
89 3
C# 一分钟浅谈:Socket 编程基础
|
23天前
|
消息中间件 网络协议 C#
C#使用Socket实现分布式事件总线,不依赖第三方MQ
`CodeWF.EventBus.Socket` 是一个轻量级的、基于Socket的分布式事件总线系统,旨在简化分布式架构中的事件通信。它允许进程之间通过发布/订阅模式进行通信,无需依赖外部消息队列服务。
C#使用Socket实现分布式事件总线,不依赖第三方MQ
|
6月前
|
数据采集 存储 安全
C#手术麻醉系统源码 可对接HIS LIS PACS 医疗系统各类设备
术麻醉信息管理系统主要还是为了手术室开发提供全面帮助的系统,其主要是由监护设备数据采集子系统和麻醉临床系统两个子部分组成。包括从手术申请到手术分配,再到术前访视、术中记录及术后恢复的全过程中都可以得到全方位的保障。
49 4
C#手术麻醉系统源码 可对接HIS  LIS   PACS 医疗系统各类设备
|
移动开发 监控 网络协议
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
|
定位技术 API C#
C# 高德地图WebApi对接示例
1、登录或注册高德地图开放平台然后申请应用key(需要认证个人或企业开发者) 高德开放平台 | 高德地图API (amap.com) 2、创建新应用,为新应用添加key,完成第一项后即可看到key管理 3、具体的开发文档、接口入参出参以及结果示例等详见高德地图开放平台官网 地理/逆地理编码-API文档-开发指南-Web服务 API | 高德地图API (amap.com) 4、直接书写具体示例 开发语言:C# 开发工具:visual studio 2019 开发项目类型:控制台程序 //
186 1
C# 高德地图WebApi对接示例
|
6月前
|
JSON C# 图形学
【Unity 3D】利用C#、Unity和Socket实现简单的在线聊天室工具(附源码 简单易懂)
【Unity 3D】利用C#、Unity和Socket实现简单的在线聊天室工具(附源码 简单易懂)
151 0
|
6月前
|
网络协议 Unix Linux
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
233 0
|
网络协议 安全 API
C# Socket网络编程精华篇
C# Socket网络编程精华篇