使用 java| android 编写第一个服务器
程序员文章站
2022-04-12 22:09:43
首先在安卓端设置相应的组件来展示服务器发送的消息,例如TextViewsocket通信需要新开一个线程,这是由于进行网络通信这类不稳定耗时的任务,可能对UI线程造成阻塞,所以Android2.3之后的平台不允许在UI线程中建立网络链接以及数据通信客户端使用Socket类 ,在构造方法中指定接收消息的服务器ip地址和端口号,在服务端使用SocketServer来监测是否有客户端向自己发送请求。android客户端向服务器发送请求package com.example.myapplica......
首先在安卓端设置相应的组件来展示服务器发送的消息,例如TextView
socket通信需要新开一个线程,这是由于进行网络通信这类不稳定耗时的任务,可能对UI线程造成阻塞,所以Android2.3之后的平台不允许在UI线程中建立网络链接以及数据通信
客户端使用Socket类 ,在构造方法中指定接收消息的服务器ip地址和端口号,在服务端使用SocketServer来监测是否有客户端向自己发送请求。
android客户端向服务器发送请求
package com.example.myapplication2;
import androidx.appcompat.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;
import java.net.SocketTimeoutException;
public class MainActivity extends AppCompatActivity {
TextView tvInfo;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvInfo=(TextView)findViewById(R.id.receivedInfo);
new Thread(){
public void run(){
try {
Socket socket=new Socket("10.28.193.145",4766);//创建socket
socket.setSoTimeout(3000);
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String lien=br.readLine();
tvInfo.setText("Client received: "+lien);
br.close();
socket.close();
}
catch (SocketTimeoutException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}
}.start();
}
}
Java程序编写服务器 使用socketServer接受请求并做出响应
package hah;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException{
ServerSocket serverSocket = new ServerSocket(4766);
while(true){
System.out.println("working");
Socket socket = serverSocket.accept();
OutputStream os = socket.getOutputStream();
os.write("this is server!".getBytes("utf-8"));
os.close();
socket.close();
}
}
}
本文地址:https://blog.csdn.net/mid_Faker/article/details/108703642