level 5
4.iapp中怎么调用?
查看手册知道,call就是用来做交互的,所以调用就好了,会java的兄弟可以建立mjava,来直接写,不会java的也没关系,直接按照我给出的示例调用就好了
2019年09月09日 12点09分
6
level 5
连接:
rec_ip:要连接的IP,文本型
8668:连接的端口
pro:返回值,返回的这个是java的特定socket类型,下面的sss.conn指得就是这个,可以建立一个全局变量保存起来sss conn = pro
call(pro,"mjava","Socket.ConnectTcp",rec_ip,8668)
发送数据:
sss.conn:连接以后,java返回的socket类型
sss.choice:要发送的数据,文本格式
isWriteok2:如果发送成功返回true,否则返回false
call(isWriteok2,"mjava","Socket.Write",sss.conn,sss.choice)
读取数据:
记得加一个w(true)循环,因为非阻塞式读取
sss.conn:连接以后,java返回的socket类型
str:返回值,收到的数据
call(str,"mjava","Socket.Read",sss.conn)
断开socket连接
如果是和其他语言通信,需要断开连接的时候,客户端这边主动断开比较好
sss.conn:连接以后,java返回的socket类型
isclose:是否关闭,是返回true
call(isclose,"mjava","Socket.Close",sss.conn)
2019年09月09日 12点09分
7
level 5
5.java源码如下,建立一个mjava保存起来,call调用就好了
2019年09月09日 12点09分
8
level 5
import android.util.DisplayMetrics;
import android.app.Activity;
import java.io.OutputStream;
import java.net.*;
import java.io.*;
import android.app.Activity;
public static Object[] ConnectTcp( String ip, int port )
{
DataOutputStreamout;
DataInputStreamin;
try
{
Socket client = new Socket( ip, port );
/* 输出 */
OutputStream outToServer = client.getOutputStream();
System.out.println( outToServer );
/* out = new DataOutputStream(outToServer); */
/* 输入 */
InputStream inFromServer = client.getInputStream();
/* in = new DataInputStream(inFromServer); */
/* 返回自定义数据对象 */
BufferedWriterBw= new BufferedWriter( new OutputStreamWriter( outToServer ) );
BufferedReaderBr= new BufferedReader( new InputStreamReader( inFromServer ) );
Object[] data = new Object[] { Bw, Br, client };
return(data);
}catch ( IOException e )
{
e.printStackTrace();
String i = "1";
Object[] data = new Object[] { i };
return(data);
}
}
/* Tcp发送信息--发送成功返回True,失败返回False */
public static boolean Write( Object[] data, String Str )
{
BufferedWriter out = (BufferedWriter) data[0];
try {
out.write( Str );
out.flush();
}catch ( IOException e ) {
return(false);
}
return(true);
}
public static String Read( Object[] data )
{
BufferedReaderin = (BufferedReader) data[1];
Stringindata;
try {
indata = in.readLine();
return(indata);
}catch ( IOException e ) {
return(null);
}
}
public static boolean Close( Object[] data )
{
Socket client = (Socket) data[2];
try {
client.close();
}catch ( IOException e ) {
return(false);
}
return(true);
}
public static boolean IsConnect(Object[] data){
Socket client = (Socket) data[2];
SocketAddress Check = client.getRemoteSocketAddress();
return Check != null;
}
2019年09月09日 12点09分
9
level 5
public static boolean IsConnect(Object[] data){
Socket client = (Socket) data[2];
SocketAddress Check = client.getRemoteSocketAddress();
return Check != null;
}
2019年09月11日 03点09分
15
level 5
这是根据sss.conn判断当前socket是否连接
2019年09月11日 03点09分
16
iapp有个坑的地方,如果发现无法根据sss.conn判断是否连接,但是syso sss.conn又存在。 界面需要s a = sss.conn重新赋值一遍,再把a作为参数传入
2019年09月11日 03点09分