直接上源码,留做纪念。

有点简单,大家不要笑,初次实现。

功能描述:java发送数据给erlang,erlang将收到的数据重复两次再发送给java。

erlang源码:模块tcp_listen

-module(tcp_listen).

-export([start/0,close/1]).
-define(PORT,5002). start() ->
AA= << "我是汉字">>,
io:format("hello erlang ~w~n",[[AA,byte_size(AA)]]),
case gen_tcp:listen( ?PORT,[binary,{active,true},{packet,0}])
of {ok,LSocket}->
io:format("listen port success ~w~n",[LSocket]), spawn(fun() -> loop(LSocket) end) ,
{ok,LSocket}
;
{error,Reason}->
io:format("listen port error Reason: ~w~n",[Reason]),
{error,{cannot_listen,Reason}}
end . %% server socket begin listen
loop(LSocket)->
io:format("begin listen lsocket: ~n",[]),
case gen_tcp:accept(LSocket)
of
{ok,Socket}->
io:format("receive client connect: ~w~n",[Socket]),
begin_receive(Socket),
spawn(fun()-> loop(LSocket) end)
;
{error,Reason}->
io:format("accept client error: ~w~n",[Reason])
end. begin_receive(Socket)->
io:format("begin listen socket client data: ~n",[]),
receive
{tcp,Socket,Data}->
NewData= <<Data/binary,Data/binary>>,
io:format("receive client data1: ~w~n",[NewData]), gen_tcp:send(Socket,NewData) ,
begin_receive(Socket); Data_2->
io:format("receive client data2: ~w~n",[Data_2])
end. close(LSocket)->
gen_tcp:close(LSocket).

java源码:类Test

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;

public class Test {

public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        System.out.println("ni hao");
        String AA="我是汉字";
        
        byte[] byte_write=null;
        try
        {
            byte_write=AA.getBytes("UTF8");
        }
        catch (UnsupportedEncodingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(byte_write.length);
        
        int port=5002;
        String ip="localhost";
        Socket socket=null;
        try
        {
             socket=new Socket(ip,port);
             System.out.println("socket connect success");
        }
        catch (UnknownHostException e)
        {
            // TODO Auto-generated catch block
             System.out.println("error:"+e.getLocalizedMessage());
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
             System.out.println("error:"+e.getLocalizedMessage());
        }
        
        OutputStream out_stream = null;
        InputStream in_stream = null;
        try {
            out_stream = socket.getOutputStream();
            in_stream = socket.getInputStream();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

byte[] byte_read=new byte[1024];
        int data_in_length=0;
        String read_in_str=null;
        try
        {
            out_stream.write(byte_write);
            System.out.println("socket write success");
            
            data_in_length=in_stream.read(byte_read);
            read_in_str=new String(byte_read,0,data_in_length, "UTF8");
            System.out.println("data_in_length:"+data_in_length+",read_in_str:"+read_in_str);
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
             System.out.println("socket connect fail");
        }
        
        try {
            socket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

如有见解或者疑问,请留言,有留必回。可能回复的会不太及时,请谅解。

erlang和java的socket通讯----最简单,初次实现。的更多相关文章

  1. Socket通讯的简单用法

    1.客户端 package Thread; import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu ...

  2. Java C++ Socket通讯

    import java.net.*; import javax.swing.plaf.SliderUI; /** * 与c语言通信(java做client,c/c++做server,传送一个结构) * ...

  3. Java Nio Socket通讯

    Server端: #############服务器端连接请求处理############### public class MultiplexerServer implements Runnable { ...

  4. JAVA之Socket通讯

    Server.java: Client.java Server console:(先启动服务器,再启动客户端)  服务器读取了客户端发来的hello server: Client console:客户 ...

  5. java socket通讯(一) 入门示例

    一.入门 要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别 二.示例 首先新建了一个java工程,包括两个部分,客户端SocketClient ...

  6. Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯

    Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...

  7. Socket通讯-Netty框架实现Java通讯

    Netty简介 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...

  8. Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)

    先交待一下业务应用背景:服务端:移动交费系统:基于C语言的Unix系统客户端:增值服务系统:基于Java的软件系统通迅协议:采用TCP/IP协议,使用TCP以异步方式接入数据传输:基于Socket流的 ...

  9. java socket通讯(二)处理多个客户端连接

    通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...

随机推荐

  1. java从Object类型转换成double类型

    java从Object类型转换为double类型: Map<String,Object> map = new HashMap<String,Object>(); map.put ...

  2. php 多进程解决代码常驻内存的问题php 多进程解决代码常驻内存的问题

    PHP不适合做常驻的SHELl进程,因为它没有专门的gc例程,也没有有效的内存管理途径. 如果用PHP做常驻SHELL,会经常被内存耗尽导致abort而unhappy. 而且,如果输入数据非法,而脚本 ...

  3. k8s的容器监测探针

    大部分的应用程序我们在部署的时候都会适当的添加监控,对于运行载体容器则更应该如此.kubernetes提供了 liveness probes来检查我们的应用程序.它是由节点上的kubelet定期执行的 ...

  4. linux系统下添加新硬盘的方法详解

    对于linux新手来说,在linux上添加新硬盘,是很有挑战性的一项工作. 在Linux服务器上把硬盘接好,启动linux,以root登陆. fdisk -l ## 这里是查看目前系统上有几块硬盘 D ...

  5. JS教程:window.location使用方法的区别

    介绍了window.location使用方法的区别. window.location.href=&http://www.jbxue.com/javascript/ldquo;url”:改变ur ...

  6. wait(),notify(),notifyAll()用来操作线程为什么定义在Object类中?

    这些方法存在于同步中: 使用这些方法必须标识同步所属的锁: 锁可以是任意对象,所以任意对象调用方法一定定义在Object类中. Condition是在java 1.5中才出现的,它用来替代传统的Obj ...

  7. WCF transport-and-message-security

    Things to Consider When Implementing a Load Balancer with WCF https://msdn.microsoft.com/library/hh2 ...

  8. C#中的 .NET 弱事件模式

    引言 你可能知道,事件处理是内存泄漏的一个常见来源,它由不再使用的对象存留产生,你也许认为它们应该已经被回收了,但不是,并有充分的理由. 在这个短文中(期望如此),我会在 .Net 框架的上下文事件处 ...

  9. java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())

    JAVA中有3种方式可以终止正在运行的线程 ①线程正常退出,即run()方法执行完毕了 ②使用Thread类中的stop()方法强行终止线程.但stop()方法已经过期了,不推荐使用 ③使用中断机制i ...

  10. dp之二维背包poj1837(天平问题 推荐)

    题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长  -15~~15)上,并使得天平平衡的方法数..... ...