十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
使用 DatagramSocket(int port) 建立socket(套间字)服务。
创新互联建站主营北林网站建设的网络公司,主营网站建设方案,重庆APP开发,北林h5微信平台小程序开发搭建,北林网站营销推广欢迎北林等地区企业咨询
将数据打包到DatagramPacket中去
通过socket服务发送 (send()方法)
关闭资源
public static void main(String[] args) {
DatagramSocket ds = null; //建立套间字udpsocket服务
try {
ds = new DatagramSocket(8999); //实例化套间字,指定自己的port
} catch (SocketException e) {
System.out.println("Cannot open port!");
System.exit(1);
}
byte[] buf= "Hello, I am sender!".getBytes(); //数据
InetAddress destination = null ;
try {
destination = InetAddress.getByName("192.168.1.5"); //需要发送的地址
} catch (UnknownHostException e) {
System.out.println("Cannot open findhost!");
System.exit(1);
}
DatagramPacket dp =
new DatagramPacket(buf, buf.length, destination , 10000);
//打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)
try {
ds.send(dp); //发送数据
} catch (IOException e) {
}
ds.close();
}
}
接收步骤:
使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。
定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容
通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中
使用DatagramPacket的方法,提取数据。
关闭资源。
import java.net.*;
public class Rec {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(10000); //定义服务,监视端口上面的发送端口,注意不是send本身端口
byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出
DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包
ds.receive(dp);//将接受内容封装到包中
String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容
System.out.println(data);//打印内容
ds.close();//关闭资源
}
}
下载一个jar包,放在lib目录下面,然后再把这个jar加入到项目里面就可以了,右键add as libary,就可以引用源代码了
1。先搞清楚要在哪种类型的程序中调用扫描仪
如果开发的程序是java application或者基于 swing的程序,可以算作是单机或者 c/s架构的程序,applet和java fx技术也可以这么算,因为都是直接通过java程序去操控扫描仪设备。
如果是基于浏览器的应用,即b/s架构的程序,扫描图像的工作是在客户端完成的,这种情况下Java程序其实是接收和保存扫描仪读取的图像结果,并不需要直接的控制扫描仪工作,这一点上和c/s架构的程序有本质的区别。
2。架构与技术应用
2.1 c/s架构程序的扫描仪调用
c/s架构需要通过java代码直接操控扫描仪设备,java语言本身被设计为跨o/s平台,对特定平台的硬件操控能力有限,因此需要借助外部技术实现扫描仪控制调用,可以通过jni(java原生应用程序接口) 技术去实现扫描仪调用,具体的细节实现就是jni中定义扫描仪操作方法,如scan()等方法,然后使用javah生成c语言的.h头文件,然后使用vc等编程语言去实现jni接口方法。
在windows平台和mac平台上面,操作扫描仪都可以通过twain协议
总之c/s架构的java程序调用扫描仪通过jni+twain编程既可完成。
2.2 b/s架构程序的扫描仪调用
b/s架构的扫描仪调用在前面已经提到过,java程序实现上做的事情是接收扫描结果图像数据 ,例如在struts2的 action中或者jsp/servlet等等程序中接收扫描仪图像扫描结果,真实的客户端扫描仪调用应该借助客户端技术去实现。
在Linux中的Mozilla浏览器中如何调用扫描仪扫描图像呢?这个着实是个难题,需要做Mozilla的插件才可以,但是在windows平台有ActiveX技术供程序员使用,因此浏览器是在windows平台中的话借助Activex技术即可扩展浏览器能力。
import java.util.Scanner;
public class Tese1{
{
public static void main ( String[] args )
{
Scanner in = new Scanner (System.in);
System.out.println ("请输入你的姓名");
String name = in.next ();
System.out.println ("姓名:" + name);
System.out.println ("请输入你的年龄");
int age = in.nextInt ();
System.out.println ("年龄:" + age);
System.out.println ("请输入你的性别");
String xb = in.next ();
System.out.println ("性别:" + xb);
in.close ();
}
}
System.in是来自控制台的输入
Scanner cin = new Scanner(System.in);
Scanner可以使用正则表达式来分析基本类型和字符串的简单文本扫描器,
构造完毕你就可以从控制台输入一些东西给java了
譬如int input = cin.nextInt();
Scanner是jdk1.5新增的一个类,使用该类可创建一个对象,Scanner scan=new Scanner(System.in);意思是声明一个Scanner类的对象,并实例化,system.in即接收键盘输入。