我想创建一个程序来模拟连接到网络的设备并通过特定端口发送信号。
设备连接到网络并通过端口发送数据。在服务器(或计算机)上,我运行了Lantronix的CPR Manager v.4.3.0.1,它将IP:PORT与计算机上的虚拟COM端口相关联。我有一个java程序,它监听COM端口并执行一个动作,这对设备很有用。
我尝试使用Socket类编写一个java应用程序来执行连接但是没有成功,在CPR端它只在第一行执行时注册了Disconnect:
Socket socket = new Socket("192.168.1.160", 8888);
我也尝试使用UDP方法,没有消息记录如此。
非常感谢任何帮助。此外,如果没有可能的Java解决方案,那么任何其他语言都可以。
修改
以下是我尝试发送数据的Java代码
public static void main(String[] args){
try{
Socket socket = new Socket("192.168.1.160", 8888);
if(socket.isConnected()){
System.out.println("It is connected.");
socket.setKeepAlive(true);
System.out.println(socket.isBound());
}else{
System.out.println("It is not connected.");
}
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in =
new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String msg = "32";
for(int i = 0; i < 50; i++){
out.println(msg);
}
//Receive a reversed message
msg = in.readLine();
System.out.println("Server : " + msg);
}catch(Exception ioe){
ioe.printStackTrace();
}
}
感谢。
更新
我与设备的某些人联系,他们告诉我有一种方法可以通过发送ASCII命令协议的TCP / IP连接直接进行通信。这将允许在每个级别进行更深入的控制。
所以,现在我正在编写一个可以使用这些协议进行通信的java程序。 因为,我不再使用通讯端口了,我想要模拟波特率,数据位,停止位。当我有一些有用时,我会发布。
感谢您的帮助。
答案 0 :(得分:0)
如果您正在使用的产品将流量转发到COM端口,那么您应该在COM端口上侦听而不是在网络连接上。套接字用于网络流量。快速谷歌搜索为我带来了这个。 How to send data to COM PORT using JAVA?
也许这会有所帮助?