java - 如何在整个程序中打开我的 Socket 并通过它传递价值
问题描述
在这里,我创建了一个我想全局化的套接字,并通过单击按钮将整数值传递给套接字。但是当我尝试使套接字全局化时出现错误。那么如何使套接字全局化并传递整数值通过这。如何使 Socket 全局化,并通过它传递整数值。如何使 Socket 全局化,并通过它传递整数值。
主要活动:
public class MainActivity extends AppCompatActivity {
Button buttonOn;
Button button1;
Socket socket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonOn = (Button) findViewById(R.id.ON);
button1 = (Button) findViewById(R.id.button1);
try {
System.out.println("HIIIII");
socket = new Socket("198.168.0.79",8888);
socket.getKeepAlive();
} catch (IOException e) {
e.printStackTrace();
}
buttonOn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = 2;
bhari b = new bhari();
b.execute(String.valueOf(temp));
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = 1;
String fan = String.valueOf(temp);
bhari b = new bhari();
b.execute(fan);
}
});
}
}
班巴里:
class bhari extends AsyncTask<String,Void,Integer>{
Socket socket;
DataOutputStream dataOutputStream;
@Override
protected Integer doInBackground(String... params) {
String massage = params[0];
try {
if(socket== null){
System.out.println("if");
socket = new Socket("192.168.0.79",8888);
socket.getKeepAlive();
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.write(Integer.parseInt(massage));
dataOutputStream.flush();
// dataOutputStream.close();
}else {
System.out.println("Else");
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.write(Integer.parseInt(massage));
dataOutputStream.flush();
// dataOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("End");
return null;
}
}
解决方案
实际上,您正在 asynctask 内创建另一个套接字对象。如果您想使用相同的套接字对象,您也必须将其传递给 asynctask。它的另一个解决方案是您将整数值传递给 asynctask 但仅在 asynctask 内部创建套接字
推荐阅读
- json - Oracle 使用 json_query 读取 JSON 数据
- excel - 通过匹配第一个元素来对齐表格行
- android - 在中心显示回收站中的最后一项
- python - 如何使用子进程获取终端错误信息?
- android - 位图到 base64 编码不起作用。损坏的图像。此外,从服务器抛出错误“Base-64 字符数组或字符串的长度无效”
- c# - C#插入与主键具有相同值的外键
- javascript - 猫鼬中的用户、帖子和评论模型
- cadence-workflow - 是否有一种机制可以立即向工作流发出有关异步活动失败/超时的信号
- javascript - 我怎样才能从数组中获得最高的最低和中等值..?
- php - 如何在 PHP 中添加具有数字值的字符串