erlang和java的socket通讯----最简单,初次实现。

简介: 直接上源码,留做纪念。 有点简单,大家不要笑,初次实现。 功能描述:java发送数据给erlang,erlang将收到的数据重复两次再发送给java。 erlang源码:模块tcp_listen -module(tcp_listen).

直接上源码,留做纪念。

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

功能描述: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();
        }
        
    }

}

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

相关文章
|
Java 物联网 定位技术
Java socket获取gps定位
通过Java Socket编程获取GPS定位信息可以实现实时的地理位置跟踪。本文介绍了如何搭建Socket服务器、解析GPS数据以及实现客户端发送GPS数据的流程。希望这篇文章能为开发者提供清晰的指导,帮助构建高效的GPS定位系统。
555 7
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
312 2
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
网络协议 安全 Java
Java Socket原理
Java Socket原理是指在Java中通过Socket实现的网络通信的基础理论与机制。Socket是网络中不同设备间通信的一种标准方式,它允许应用程序之间通过TCP/IP等协议进行数据交换。在Java中,利用Socket编程可以方便地创建客户端与服务器端应用,实现跨网络的数据传输功能,是互联网软件开发中的重要技术之一。它支持多种通信模式,如可靠的流式套接字(TCP)和数据报式套接字(UDP)。
467 10
|
网络协议 机器人 C++
KUKA机器人Socket通讯配置方法:技术干货分享
【10月更文挑战第7天】在现代自动化生产线上,KUKA机器人凭借其高效、灵活和精确的特点,成为众多企业的首选。为了实现KUKA机器人与其他设备或系统之间的数据交互,Socket通讯配置显得尤为重要。本文将详细介绍KUKA机器人Socket通讯的配置方法,帮助大家在工作中更好地掌握这一技术。
2521 2
|
消息中间件 负载均衡 Java
Java微服务通讯方式有哪些?
【8月更文挑战第18天】Java微服务通讯方式有哪些?
563 1
如何在Java中实现多线程的Socket服务器?
在Java中,多线程Socket服务器能同时处理多个客户端连接以提升并发性能。示例代码展示了如何创建此类服务器:监听指定端口,并为每个新连接启动一个`ClientHandler`线程进行通信处理。使用线程池管理这些线程,提高了效率。`ClientHandler`读取客户端消息并响应,支持简单的文本交互,如发送欢迎信息及处理退出命令。
646 2
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
设计模式 安全 Java
Java多线程通讯
这些机制都是多线程通信的关键,使用它们可以在Java中实现高效、安全的线程协作。在实现多线程通信时,需注意死锁、饥饿、竞态条件等多线程问题。确保对多线程的理解深入和正确的设计模式应用将会是编写稳健多线程程序的基础。
156 0
|
网络协议 Java
如何在Java中使用Socket编程实现TCP连接?
在Java中,通过Socket编程实现TCP连接非常常见。以下演示了基本的TCP通信流程,可根据具体需求进行扩展。
944 0
|
Java 数据格式
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
458 0