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();
        }
        
    }

}

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

相关文章
|
17天前
|
Java
java实现上位机与西门子PLC的通讯设置
这段代码创建了一个ZCAN_Transmit_Data数组,初始化并设置了数组中的第一个元素,包括写入数据、传输类型为1。然后,创建了一个ZCAN_CAN_FRAME对象,指定了CAN_ID和数据长度为8,并将十六进制字符串转换为字节数组填充到数据字段。将这个帧赋值给ZCAN_Transmit_Data对象。最后通过ZLGCAN接口发送数据,如果返回值不等于1,则抛出异常,否则返回发送结果。
|
4月前
|
Java Android开发
如何在Java中创建Socket连接?
如何在Java中创建Socket连接?
69 0
|
2月前
|
Java
[Java]Socket套接字(网络编程入门)
[Java]Socket套接字(网络编程入门)
38 0
|
3月前
|
监控 应用服务中间件
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
|
3月前
|
Java
基于socket实现java Swing简易聊天室[附完整源码]
基于socket实现java Swing简易聊天室[附完整源码]
|
3月前
|
数据可视化 Java 关系型数据库
基于java Swing 框架使用socket技术开发的即时通讯系统【源码+数据库】
基于java Swing 框架使用socket技术开发的即时通讯系统【源码+数据库】
|
4月前
|
分布式计算 Linux Spark
【已解决】Caused by: java.net.SocketException: Connection reset by peer: socket write error
【已解决】Caused by: java.net.SocketException: Connection reset by peer: socket write error
72 0
|
4月前
|
网络协议 安全 Java
Java网络编程入门指南:TCP/IP协议与Socket通信
Java网络编程入门指南:TCP/IP协议与Socket通信
58 1
|
7月前
|
Java
Java的Socket进行通信
下面是一个使用Java的Socket进行通信的简单示例
|
网络协议 Java 测试技术
Java网络编程之通过代码实现Socket通信
Java网络编程之通过代码实现Socket通信
176 1