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();
}
}
}
JAVA与VB通过SOCKET通讯的更多相关文章
- Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯
Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...
- Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)
先交待一下业务应用背景:服务端:移动交费系统:基于C语言的Unix系统客户端:增值服务系统:基于Java的软件系统通迅协议:采用TCP/IP协议,使用TCP以异步方式接入数据传输:基于Socket流的 ...
- java与C++之间进行SOCKET通讯要点简要解析
原文链接: http://blog.csdn.net/hslinux/article/details/6214594 java与C++之间进行SOCKET通讯要点简要解析 hslinux 0.篇外语 ...
- java socket通讯(二)处理多个客户端连接
通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...
- java socket通讯(一) 入门示例
一.入门 要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别 二.示例 首先新建了一个java工程,包括两个部分,客户端SocketClient ...
- Socket通讯-Netty框架实现Java通讯
Netty简介 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...
- ProtocolBuffers (二) android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】
protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据. 谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区. 参考文档 http://c ...
- Java Socket通讯---网络基础
java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛 ...
- java socket通讯
本来是打算验证java socket是不是单线程操作,也就是一次只能处理一个请求,处理完之后才能继续处理下一个请求.但是在其中又发现了许多问题,在编程的时候需要十分注意,今天就拿出来跟大家分享一下. ...
随机推荐
- 【洛谷4424】[HNOI/AHOI2018] 寻宝游戏(位运算思维题)
点此看题面 大致题意: 给你\(n\)个\(m\)位二进制数.每组询问给你一个\(m\)位二进制数,要求你从\(0\)开始,依次对于这\(n\)个数进行\(and\)或\(or\)操作,问有多少种方案 ...
- Videos
Videos 时间限制: 1 Sec 内存限制: 128 MB提交: 17 解决: 7[提交] [状态] [讨论版] [命题人:admin] 题目描述 C-bacteria takes charg ...
- 面向服务架构SOA
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型.它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来:接口是采用中 ...
- Bootstrap 历练实例-轮播(carousel)插件方法
方法 下面是一些轮播(Carousel)插件中有用的方法: 方法 描述 实例 .carousel(options) 初始化轮播为可选的 options 对象,并开始循环项目. $('#identifi ...
- Java 获取Web项目相对webapp地址
例如, import java.io.File; import java.io.FileInputStream; import javax.servlet.http.HttpServletReques ...
- FreeRTOS的学习路线
背景 由于之前接触过一些嵌入式RTOS,如Keil-RTX,uCOS-II,也曾经关注过FreeRTOS,但一直没有机会采用FreeRTOS开发.目前FreeRTOS做为主流RTOS,风声正盛.作为嵌 ...
- python3 练习题100例 (十)
题目十:判断101-200之间有多少个素数,并输出所有素数. #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 题目十 ...
- Python基础函数必学
我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = 73.1 ...
- 初学python来进行odoo12版本开发
这是我的第一篇博客.请多多指教! 首先要下载odoo-12的源代码 官方下载路径: https://github.com/odoo/odoo/archive/12.0.zip 随便新 ...
- UVALive 4685 Succession 树DP+背包
一.前言 这道题同样来自于红书P142,作为树DP专题中的一道比较难的题目,A了一天左右的时间,看上去事实证明,这题的难度理我本身的实力还是有些太远了,于是正确的做法应该是分析一下题目之后进行解析什么 ...