JAVA与VB通过SOCKET通讯

在做项目的过程中,本来是想使用JAVA的comm.jar工具实现串口通讯,不知道怎么回事,总是取不到电脑的串口。所以,改为现在的这种模式:java通过socket给vb程序发送指令,然后VB程序通过comm部件给串口发送指令。效果不错。

程序服务端使用VB实现:

代码:

Private lngWSKIndex As Long
Private Sub Form_Load()
   lvRecord.ColumnHeaders.Clear
   lvRecord.ColumnHeaders.Add , , "ID", lvRecord.Width / 15
   lvRecord.ColumnHeaders.Add , , "客户端序列号", lvRecord.Width / 4
   lvRecord.ColumnHeaders.Add , , "内容", lvRecord.Width
   lvRecord.ListItems.Clear
   wskServer(0).LocalPort = 9999
   wskServer(0).Listen
   lngWSKIndex = 0
   If MSComm1.PortOpen = True Then
   MSComm1.PortOpen = False
     Else
     End If
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
   
End Sub

Private Sub wskServer_Close(Index As Integer)
  
  If Index = 0 Then Exit Sub
   
  '关闭客户端对应的应答Socket
   Close #Index
   
   '卸载自动加载控件,节省资源
   Unload wskServer(Index)
End Sub

'服务器端接收到连接请求
Private Sub wskServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
   lngWSKIndex = lngWSKIndex + 1                     '连接号自动加1
   Load wskServer(lngWSKIndex)                       '加载客户端连接请求对应的应答Socket
   wskServer(lngWSKIndex).Accept requestID           '允许连接
End Sub

Private Sub wskServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim strGetData As String
    Dim nCount As Integer
    Dim i As Integer
    
    wskServer(Index).GetData strGetData, vbString
    nCount = lvRecord.ListItems.Count
    nCount = nCount + 1
    If strGetData = "1=1" Then
    lvRecord.ListItems.Add , , nCount
    lvRecord.ListItems(nCount).ListSubItems.Add , , "接收到第" & Index & "个警报"
    lvRecord.ListItems(nCount).ListSubItems.Add , , "未结账通过"
    End If                                                      '只对接收到的客户端发送命令
       ' wskServer(Index).SendData "信息:" & strGetData & "已收到!"
        Dim Temp(0) As Byte
        Dim strBuff As String
        strBuff = strGetData
        MSComm1.Output = strBuff
    
End Sub

需要添加Winsock部件和MSComm部件

程序的客户端JAVA代码

package com;

import java.io.*;
import java.net.*;

public class Socket_t {

public static void main(String args[]){ 
 try {
  Socket_t.SendData("1=1");
  Thread.sleep(10000L);
  Socket_t.SendData("1=0");
 } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 
}

public static void  SendData(String data){
  try{
         Socket socket=new Socket("127.0.0.1",9999);
         BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
         PrintWriter os=new PrintWriter(socket.getOutputStream());
         BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            os.write(data);
           
            os.flush();
            os.close(); //关闭Socket输出流
           socket.close(); //关闭Socket
         }catch(Exception e){
          e.printStackTrace();
         }
}
}

JAVA与VB通过SOCKET通讯的更多相关文章

  1. Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯

    Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...

  2. Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)

    先交待一下业务应用背景:服务端:移动交费系统:基于C语言的Unix系统客户端:增值服务系统:基于Java的软件系统通迅协议:采用TCP/IP协议,使用TCP以异步方式接入数据传输:基于Socket流的 ...

  3. java与C++之间进行SOCKET通讯要点简要解析

    原文链接: http://blog.csdn.net/hslinux/article/details/6214594 java与C++之间进行SOCKET通讯要点简要解析 hslinux 0.篇外语 ...

  4. java socket通讯(二)处理多个客户端连接

    通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...

  5. java socket通讯(一) 入门示例

    一.入门 要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别 二.示例 首先新建了一个java工程,包括两个部分,客户端SocketClient ...

  6. Socket通讯-Netty框架实现Java通讯

    Netty简介 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...

  7. ProtocolBuffers (二) android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】

    protobuf 是什么?   Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据. 谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区. 参考文档 http://c ...

  8. Java Socket通讯---网络基础

    java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛 ...

  9. java socket通讯

    本来是打算验证java socket是不是单线程操作,也就是一次只能处理一个请求,处理完之后才能继续处理下一个请求.但是在其中又发现了许多问题,在编程的时候需要十分注意,今天就拿出来跟大家分享一下. ...

随机推荐

  1. Linux基础精华(转)

    Linux基础精华 (继续跟新中...) 常用命令: Linux shell 环境 让你提升命令行效 率的 Bash 快捷键 [完整版] 设置你自己的liux alias Linux的Find使用 L ...

  2. 自动生成 WebApi 在线说明文档。

    1.使用Swashbuckle实现 Swashbuckle 是.NET类库,可以将WebAPI所有开放的控制器方法生成对应SwaggerUI的JSON配置.再通过SwaggerUI 显示出来.类库中已 ...

  3. java菜鸟的Python学习之路(1)

    学习一门新的语言,应当抓住语言的共有特性,这样容易触类旁通,学习起来也十分的快捷愉悦 而语言的特性大约有以下元素 变量定义与类型 算术符号与逻辑符号 for 循环与 while 循环 数组,线性表等一 ...

  4. windows下安装python的包管理工具pip,scikit-learn

    打开https://pip.pypa.io/en/latest/installing.html#python-os-support 下载pip-get.py 进入python,执行pip-get.py ...

  5. ES6 Reflect使用笔记

    Reflect Reflect 对象和Proxy对象一样, 为操作对象提供了新的API. 为什么使用 Reflect的方式来操作对象? 将 Object 对象上一些明显属于内部的方法放到 Reflec ...

  6. Python基础2-Python中文乱码(转)

    转自:https://blog.csdn.net/apache0554/article/details/53889253 前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新 ...

  7. Mysql 查询出某列字段 被包含于 条件数据中

    我们通常是使用  某条件  是否包含于 某列中   ,简单点 就是:select * from 表名 where  字段名 like '%条件数据%'; 现在说下   某列 被包含于 条件数据中 接下 ...

  8. crontab -e 和/etc/crontab的区别

    /etc/crontab文件和crontab -e命令区别/etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see man 4 crontab ...

  9. JZOJ 5347. 遥远的金字塔

    Description Input Output Sample Input 5 3 1 6 1 5 3 5 4 4 4 4 Sample Output 15 Data Constraint 做法: 其 ...

  10. JZOJ 3382. 【NOIP2013模拟】七夕祭

    3382. [NOIP2013模拟]七夕祭 Time Limits: 1000 ms  Memory Limits: 131072 KB  Detailed Limits   Goto Problem ...