1.在app目录下的build.gradle里配置:
implementation 'com.github.vilyever:AndroidSocketClient:2.0.1'
2.在根目录下的settings.gradle里配置:
jcenter()
maven { url "https://www.jitpack.io'}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0dbd1de5c33ba3b14103e10518410032.png)
3.添加权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
4.传入服务器地址获取IP:
public void getIp(final String host) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String[] ipAddressArr = null;
InetAddress[] inetAddressArr = InetAddress.getAllByName(host);
if (inetAddressArr != null && inetAddressArr.length > 0) {
ipAddressArr = new String[inetAddressArr.length];
for (int i = 0; i < inetAddressArr.length; i++) {
ipAddressArr[i] = inetAddressArr[i].getHostAddress();
Log.i("myipurl", i + "---" + ipAddressArr[i]);
if (ipAddressArr[i] != null || !ipAddressArr[i].equals("null")) {
MySave.getInstance().saveShare("myIp", ipAddressArr[i]);
Log.i("myipurl", "ipAddressArr------:" + ipAddressArr[i]);
}
}
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}).start();
}
4.主代码:
public class MainActivity extends AppCompatActivity {
private SocketClient socketClient;
private SocketClientDelegate delegate;
private EditText et_text;
private Button btn_send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_text = (EditText) findViewById(R.id.et_text);
btn_send = (Button) findViewById(R.id.btn_send);
try {
startSocketClient("");
} catch (IOException e) {
e.printStackTrace();
}
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String string = et_text.getText().toString().trim();
if (!TextUtils.isEmpty(string)){
socketSendMessage(string);
et_text.setText("");
}
}
});
}
private void startSocketClient() throws IOException {
socketClient = new SocketClient();
socketClient.getAddress().setRemoteIP("49.4.69.20");
socketClient.getAddress().setRemotePort(16018);
socketClient.getAddress().setConnectionTimeout(15 * 1000);
socketClient.setCharsetName("UTF-8");
socketClient.connect();
socketClient.registerSocketClientDelegate(delegate = new SocketClientDelegate() {
@Override
public void onConnected(SocketClient client) {
Log.d("melog", "gamesocket连接成功");
}
@Override
public void onDisconnected(SocketClient client) {
Log.d("melog", "gamesocket连接断开");
socketClient.connect();
}
@Override
public void onResponse(SocketClient client, @NonNull SocketResponsePacket responsePacket) {
String message = responsePacket.getMessage();
Log.i("接收服务端消息:",message);
}
});
}
private void socketSendMessage(String info) {
String status = String.valueOf(socketClient.getState());
if (socketClient != null && status == "Connected") {
socketClient.sendData(info.getBytes());
}
}
private void requestGameSocketConnectFlg() {
String status = String.valueOf(socketClient.getState());
}
private void closeGameSocket() {
if (socketClient != null) {
socketClient.removeSocketClientDelegate(delegate);
socketClient.disconnect();
}
}
}