zoukankan      html  css  js  c++  java
  • JAVA与VB通过SOCKET通讯

    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();
             }
    }
    }

  • 相关阅读:
    Windows Mobile 中 Cellular Emulator 与 Device Emulator 连接不上的解决办法?
    Windows Mobile Space Index
    通过Windows Mobile连接管理器建立网络连接
    为Windows mobile编写设计友好的控件[Writing designer friendly controls for Windows Mobile]
    TransparentImage、TransparentBlt [Daliy APIs]
    GetDC、GetDCEx、GetWindowDC [Daily APIs]
    SHCreateMenuBar [Daily APIs]
    无法创建VC++ 智能项目的解决方法?
    CreateCompatibleBitmap [Daliy APIs]
    Windows Mobile Gesture 开发学习 持续更新
  • 原文地址:https://www.cnblogs.com/liushao/p/6402766.html
Copyright © 2011-2022 走看看