java能与其它语言书写的程序进行通信吗

网上有关“java能与其它语言书写的程序进行通信吗”话题很是火热,小编也是针对java能与其它语言书写的程序进行通信吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

ava 和其它语言之间进行Socket通信使用Socket和ServerSocket类。

用JAVA编写server,C语言编写Client,当然可以实现通信(示例在最后)。

1、Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket 是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

重要的Socket API:

java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,使用频繁的三个方法:

. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。

. getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例,。

. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

2.如何开发一个Server-Client模型的程序

开发原理:

服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

下面这个程序用JAVA建立了一个服务器,它一直监听10000端口,等待用户连接,而用户端则可以使用C写的程序来连接该服务器。

本程序在建立连接后给客户端返回一段信息,然后结束会话。这个程序一次只能接受一个客户连接。

import java.net.*;

import java.io.*;

public class Server

{

private ServerSocket ss;

private Socket socket;

private BufferedReader in;

private PrintWriter out;

public Server()

{

try

{

ss = new ServerSocket(10000);

while (true)

{

socket = ss.accept();

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

out = new PrintWriter(socket.getOutputStream(),true);

String line = in.readLine();

out.println("you input is :" + line);

out.close();

in.close();

socket.close();

}

ss.close();

}

catch (IOException e)

{}

}

public static void main(String[] args)

{

new Server();

}

}

AcceptedByMethodRestEasy的 创建一个类,这两个PreProcessInterceptor和AcceptedByMethod。在accept-方法,您可以检查是否有带注释的@QueryParam("name")。如果有一个注释,返回与真实accept-方法。 在preProcess-方法,你可以从查询request.getUri().getQueryParameters().getFirst("name")。 编辑: 下面是一个例子:public class InterceptorTest {

@Path("/")

public static class MyService {

@GET

public String listByName(@QueryParam("name") String name){

return "not-intercepted-" + name;

}

}

public static class MyInterceptor implements PreProcessInterceptor, AcceptedByMethod {

@Override

public boolean accept(Class declaring, Method method) {

for (Annotation[] annotations : method.getParameterAnnotations()) {

for (Annotation annotation : annotations) {

if(annotation.annotationType() == QueryParam.class){

QueryParam queryParam = (QueryParam) annotation;

return queryParam.value().equals("name");

}

}

}

return false;

}

@Override

public ServerResponse preProcess(HttpRequest request, ResourceMethod method)

throws Failure, WebApplicationException {

String responseText = "intercepted-" + request.getUri().getQueryParameters().getFirst("name");

return new ServerResponse(responseText, 200, new Headers<Object>());

}

}

@Test

public void test() throws Exception {

Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();

dispatcher.getProviderFactory().getServerPreProcessInterceptorRegistry().register(new MyInterceptor());

dispatcher.getRegistry().addSingletonResource(new MyService());

MockHttpRequest request = MockHttpRequest.get("/?name=xxx");

MockHttpResponse response = new MockHttpResponse();

dispatcher.invoke(request, response);

assertEquals("intercepted-xxx", response.getContentAsString());

}

}

2. 如果返回return new ServerResponse(responseText, 200, new Headers<Object>());你将失去的终点。你需要返回null如果你还想被传递到终点。

关于“java能与其它语言书写的程序进行通信吗”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[风夜昕]投稿,不代表易麦号立场,如若转载,请注明出处:https://www.emaipos.com/emai/864.html

(16)

文章推荐

  • 染眉毛用什么染?

    染眉毛需要用染眉膏进行染色。眉毛比头发短且接近眼睛,不建议使用染发剂染眉。染发剂接触皮肤,而且在染发的过程中还要加热,使苯类的有机物质通过头皮进入毛细血管,然后随血液循环到达骨髓,长期反复作用于造血干细胞,导致造血干细胞的恶变,导致白血病的发生。染眉膏染眉步骤如下:第一步,需要用浅色眉笔在眉毛下方描

    2025年09月08日
    8
  • 你是我的独家记忆经典语录大全精选79句

    网上有关“你是我的独家记忆经典语录大全精选79句”话题很是火热,小编也是针对你是我的独家记忆经典语录大全精选79句寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一.如果青春有错,那也只是因为我们还在成长,盲目得没有方向。二.就算我所有的愿望都已经死去,但我

    2025年09月09日
    13
  • 男士用什么牌子的保湿乳液好?

    据我了解的情况,现在好像有更多的男生对于护肤不是很抵触了,虽不抵触,但是却不会挑选合适自己的男士水乳,不过没事的,首先有这个心态的转变就是好事呢,不会挑选没关系的,我用的多,我可以给大家分享一下我的使用心得,我用过的一些男士水乳,有些平价好用的,还有一些贵的也会踩雷,有需要的可以看下我的分享。一、遇

    2025年09月10日
    14
  • 什么手膜保湿效果好

    一双好看的手除了天生的之外,一定离不开精心的呵护,想要让双手变得柔嫩好看,使用护手霜是最常用的方法,其次你还可以试试给手做面膜,也就是使用手膜。那什么手膜保湿效果好呢?下面为大家推荐几款好用的手膜。悦诗风吟手膜悦诗风吟手膜悦诗风吟家的手膜含有七种草本成分,能够深入滋养手部肌肤,滋润保湿的效果比护手霜

    2025年09月11日
    15
  • 亮片啫喱膏变干了怎么办

    亮片啫喱膏变干了可以往进加点热水就行,别加太多了,可能粘性会稍微有点减弱。第一步先用牙签或者其它类似工具把干掉的啫喱眼影弄碎,第二步加水,加到以前干巴的位置,我感觉什么水都可以,我用的是自来水,第三步用牙签把水和啫喱眼影搅拌成一体,等水完全融进去就恢复原样了,使用起来和刚买的没啥太大差别。方法介绍亮

    2025年09月12日
    9
  • 倩碧G什么意思

    根据您提供的瓶底编号,这款倩碧洁面皂的生产日期为2012年7月。具体解读如下:-上一行编号B72,其中B代表产地,72代表生产日期,即7月份的第二周。-下一行编号12192,其中12代表生产年份,即2012年,192代表生产天数,即生产周期为192天。因此,这款倩碧洁面皂是2012年7月份生产

    2025年09月12日
    8
  • 婴儿脱发是怎么回事?

    新生宝宝脱发可以分为以下几种奶秃:宝宝的头发发梢发黄,而且掉发,这是一种正常的新陈代谢,等发黄的头发掉光后会慢慢稳定下来,这种情况俗称奶秃枕秃:宝宝大部分时间都躺在床上,头部和枕头接触容易出汗使头部发痒,新生儿无法用手抓,也不能用语言表达,只能晃动头部来对付发痒的问题,经常摩擦后,枕部的头发就会被磨

    2025年09月12日
    10
  • 蓝色墨水弄在白色衣服上怎么才能洗干净

    备用材料:白色衣服、漂白剂、水、盆。1,准备被蓝色墨水染蓝的白色衣服。2,清水中倒入84消毒液,半盆水对应1/3瓶消毒液,溶解稀释,白色衣服可以用84消毒液或者漂白水进行清洗,因为其主要成分是次氯酸钠,其中的次氯酸跟具有氧化性,而染色的衣服里的染色剂普遍具有还原性,可以还原,84消毒液或者漂白水倒入

    2025年09月12日
    6
  • 职业教育是与普通教育具有什么地位的什么

    网上有关“职业教育是与普通教育具有什么地位的什么”话题很是火热,小编也是针对职业教育是与普通教育具有什么地位的什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。职业教育含义:职业教育是指使受教育者具备从事某种职业或者职业发展所需要的职业道德、科学文化与专业知

    2025年09月13日
    5
  • 香体露什么牌子好?

    说起香水,我们大家肯定不会感到陌生,其实我们的身体都是有各自的气味的,只是我们通常闻不到。香水就是用来香体的,给人一种愉悦的感觉,好的香水能够增加人的气质。而香体露也是香体的,那么香体露什么牌子好?香体露怎么使用?一起来看看。1、香体露什么牌子好花牌走珠香体露(海洋微风)蓝参考价格:¥22产品规格:

    2025年09月13日
    1

发表回复

本站作者后才能评论

评论列表(4条)

  • 风夜昕
    风夜昕 2025年09月12日

    我是易麦号的签约作者“风夜昕”!

  • 风夜昕
    风夜昕 2025年09月12日

    希望本篇文章《java能与其它语言书写的程序进行通信吗》能对你有所帮助!

  • 风夜昕
    风夜昕 2025年09月12日

    本站[易麦号]内容主要涵盖:生活百科,小常识,生活小窍门,知识分享

  • 风夜昕
    风夜昕 2025年09月12日

    本文概览:网上有关“java能与其它语言书写的程序进行通信吗”话题很是火热,小编也是针对java能与其它语言书写的程序进行通信吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在...

    联系我们

    邮件:易麦号@sina.com

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们