【Android】android中Socket进行通信

2025-11-01 15:37:40

1、Socket(InetAddress/String remoteAddress,int port):

创建连接到指定远程主机、远程端口的Socket,该构造器没有指定本地地址、本地端口,默认使用本地主机的默认IP地址,默认使用系统动态指定的IP地址。

Socket(InetAddress/String remoteAddress,int port,InetAddress localAddr,intlocalPort):

创建连接到指定远程主机、远程端口的Socket,并指定本地IP地址和本地端口,适用于本地主机有多个IP地址的情形。

【Android】android中Socket进行通信

2、代码实现如下

//创建连接到本机、20000端口的Socket

Socket 是= new Socket("192.168.1.121",20000);

//下面为可以使用的Socket进行通信

。。。

【Android】android中Socket进行通信

3、Socket提供了两个方法来获取输入流和输出流

InputStream getInputStreamStream():

返回该Socket对象对应的输入流,让程序通过该输入流从Socket中取出数据。

OutputStream getOutputStream():

返回该Socket对象对应的输出流,让程序通过该输出流向Socket中输出数据。

【Android】android中Socket进行通信

4、public class SimpleServer{  public static void main(String[] args) throws IOException {

  // 创建一个ServerSocket,用于监听客户端Socket的连接请求    ServerSocket ss = new ServerSocket(20000);    //①    // 采用循环不断接受来自客户端的请求    while (true)  {      // 每当接受到客户端Socket的请求,服务器端也对应产生一个Socket      Socket s = ss.accept();      OutputStream os = s.getOutputStream();      os.write("您好,您收到了服务器的新年祝福!\n".getBytes("utf-8"));    // 关闭输出流,关闭Socket      os.close();      s.close();    }  }

}

<!-- 授权访问互联网-->

<uses-permission android:name="android.permission.INTERNET" />

【Android】android中Socket进行通信

5、Socket对象提供了一个setSoTimeout(int timeout)来设置超时时长。

Socket s = new Socket("192.168.1.121",20000);

//设置10秒之后即认为超时

s.setSoTimeout(10000);

try {

    //使用Scanner来读取网络输入流中的数据

    Scanner scan = new Scanner(s.getInputStream());

    //读取一行字符

    String line = scan.nextLine();

     。。。

}catch(SocketTimeoutException ex) {

     //对异常进行处理

     。。。

}

【Android】android中Socket进行通信

6、Socket的所有构造器里都没有提供指定超时时长的参数,所以程序应用该先创建一个无连接的Socket,再调用Socket的connect()方法来连接远程服务器,而connect()方法就可以接受一个超时时长参数。

//创建一个无连接的Socket

Socket s = new Socket();

//让该Socket连接到远程服务器,如果经过10秒还没有连接到,

//则认为连接超时

s.connect(new InetAddress(host,port),10000);

【Android】android中Socket进行通信

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢