基于TCP/IP的ServerSocket/Socket通信
pc服务器端程序:
package com.company; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Main { public static void main(String[] args) throws IOException { // write your code here ServerSocket ss = new ServerSocket(30000); //不断循环接受来自客户端的请求 while(true){ //每当接收到客户端Socket的请求时,服务器端也对应缠手一个Socket Socket socket = ss.accept(); OutputStream os = socket.getOutputStream(); os.write("您好,您收到来自服务器的祝福 ".getBytes("utf-8")); System.out.println("收到一个socket请求"); //关闭输出流,关闭socket os.close(); socket.close(); } } }
客户端程序:
package com.example.jialuzhang.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; public class MainActivity extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.tv1); new Thread(){ @Override public void run(){ try { Socket s = new Socket("192.168.199.208",30000); s.setSoTimeout(2000); //设置两秒的超时时长 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); String line = br.readLine(); textView.setText("来自服务器的数据:"+line); br.close(); s.close(); } catch (IOException e) { e.printStackTrace(); textView.setText("请求超时"); } } }.start(); } }
结果: