- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
海霍,
好吧,我的问题对我来说解释起来有点棘手。我尝试将我的安卓平板电脑 (4.0.3) 连接到 RS-232 转换器。这已经有效,但只是单向的。如果我尝试发送任何东西,它就会被发送。我无法收到任何答案,但这是必要的。我明白了
Logcat Errors: Either Socket is not bound, or EADRESS already in use.
我尝试了多种方法,但没有一种能满足我的需要。
我的目标:在发送字节时发送和接收字节。
我的架构: MainActivity -> 调用 2 个异步任务1.网络,2.并发服务器网络必须通过 DataOutputStream 发送我的命令。好的在这里。ConcurrentServer 必须使用 DataInputStream 接收传入数据,将其交给 ConcurrentServer 类中的方法。此方法应发送一个应答字节。
我的 ConcurrentServer 没有收到,该方法也没有发送任何东西......
我希望你能帮助我。
代码:
package com.example.wettkampftimerbt;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import org.apache.http.client.protocol.ClientContext;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
public class ConcurrentServer extends AsyncTask<Void, Void, Void>{
private final String LFDNR1 = "lfdnr1";
private final String LFDNR2 = "lfdnr2";
private final String LFDNR3 = "lfdnr3";
private final String LFDNR4 = "lfdnr4";
private final String LFDNR5 = "lfdnr5";
private final String LFDNR6 = "lfdnr6";
private final String LFDNR7 = "lfdnr7";
private final String LFDNR8 = "lfdnr8", PREFS_NAME = "prefs",
COMMAND = "command", LANE = "lane", DINYMIN ="dinymin", DINYSEK="dinysek";
int w1, w2, w3, w4, w5, w6, w7, w8, diny1, diny2, diny3, diny4, diny5,
diny6, diny7, diny8, dinymin, dinysek;
Context context;
ServerSocket sock;
Socket ss;
protected Void doInBackground (Void... arg0) {
System.out.println("ConcurrentServer_doInBackgorund");
Log.e("SERVER", "CON");
try {
sock = new ServerSocket(2010);
ss = sock.accept();
sock.setReuseAddress(true);
sock.bind(new InetSocketAddress(2010));
ss.setReuseAddress(true);
ss = new Socket("192.168.0.100", 2011);
sock.setSoTimeout(1000);
for (;;) {
boolean stopData = true;
BufferedReader din = new BufferedReader(new
InputStreamReader(ss.getInputStream()));
//DataInputStream din = new DataInputStream(
// ss.getInputStream());
while (stopData) {
// Einlesen
diny1 = (din).read();// 03
diny2 = (din).read();// Empfänger(90...97)
diny3 = (din).read();// Sender(80)
diny4 = (din).read();// lfdnr
diny5 = (din).read();// Kommando(Start, Stop...)
if (diny5==79){
dinymin = (din).read();//Minuten
dinysek = (din).read();//Sekunden
}
diny6 = (din).read();// Prüfsumme
diny7 = (din).read();// 05
din.close();
//ss.close();
//sock.close();
System.out
.println("diny: " + diny1 + " " + diny2 + " " + diny3
+ " " + diny4 + " " + diny5 + " " + diny6 + " "
+ diny7);
Log.e("Reccom", "RECCOM");
reccom();
stopData=false;
}
}
} catch (Exception e) {
System.out.println("IO error" + e);}
return null;
}
public int getLFDNR1(Context context) {
System.out.println("ConcurrentServer_getlfdnr1");
w1 = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).getInt(LFDNR1, 00);
//w1 = Integer.valueOf(LFDNR1);
return w1;
}
public String getLFDNR2(Context context) {
System.out.println("ConcurrentServer_getlfdnr2");
w2 = Integer.valueOf(LFDNR2);
return LFDNR2;
}
public String getLFDNR3(Context context) {
System.out.println("ConcurrentServer_getlfdnr3");
w3 = Integer.valueOf(LFDNR3);
return LFDNR3;
}
public String getLFDNR4(Context context) {
System.out.println("ConcurrentServer_getlfdnr4");
w4 = Integer.valueOf(LFDNR4);
return LFDNR4;
}
public String getLFDNR5(Context context) {
System.out.println("ConcurrentServer_getlfdnr5");
w5 = Integer.valueOf(LFDNR5);
return LFDNR5;
}
public String getLFDNR6(Context context) {
System.out.println("ConcurrentServer_getlfdnr6");
w6 = Integer.valueOf(LFDNR6);
return LFDNR6;
}
public String getLFDNR7(Context context) {
System.out.println("ConcurrentServer_getlfdnr7");
w7 = Integer.valueOf(LFDNR7);
return LFDNR7;
}
public String getLFDNR8(Context context) {
System.out.println("ConcurrentServer_getlfdnr8");
w8 = Integer.valueOf(LFDNR8);
return LFDNR8;
}
private void reccom() throws IOException {
System.out.println("ConcurrentServer_reccom");
if (diny1 == 3 && diny7 == 5) {
answer();
} else {
}
switch (diny2) {
case (144): // 144=90=Bahn1
c144(context);
break;
case (145): // 145=91=Bahn2
c145(context);
break;
case (146): // 146=92=Bahn3
c146(context);
break;
case (147): // 147=93=Bahn4
c147(context);
break;
case (148): // 148=94=Bahn5
c148(context);
break;
case (149): // 149=95=Bahn6
c149(context);
break;
case (150): // 150=96=Bahn7
c150(context);
break;
case (151): // 151=97=Bahn8
c151(context);
break;
}
}
private void answer() throws IOException {
System.out.println("ConcurrentServer_answer");
Socket sock ;
int w0=0,w5=32;
SocketAddress sockaddr = new InetSocketAddress("192.168.0.100", 2011);
sock = new Socket();
int timeout = 1000; // 1000 millis = 1 second
sock.connect(sockaddr, timeout);
boolean stopData = true;
DataOutputStream dos = new DataOutputStream(sock.getOutputStream());
while (stopData) {
dos.writeByte(w0);
dos.writeByte(diny1);
dos.writeByte(diny3);
dos.writeByte(diny2);
dos.writeByte(diny4);
dos.writeByte(w5);
dos.writeByte(diny6);
dos.writeByte(diny7);
dos.flush();
//dos.close();
stopData = false;}
}
private void c151(Context context) {
System.out.println("ConcurrentServer_c151");
getLFDNR8(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "151").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println("lfdnr8 passt nicht");
}
}
private void c150(Context context) {
System.out.println("ConcurrentServer_c150");
getLFDNR7(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "150").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println("lfdnr7 passt nicht");
}
}
private void c149(Context context) {
System.out.println("ConcurrentServer_c149");
getLFDNR6(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "149").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println("lfdnr6 passt nicht");
}
}
private void c148(Context context) {
System.out.println("ConcurrentServer_c148");
getLFDNR5(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "148").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println("lfdnr5 passt nicht");
}
}
private void c147(Context context) {
System.out.println("ConcurrentServer_c147");
getLFDNR4(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "147").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println("lfdnr4 passt nicht");
}
}
private void c146(Context context) {
System.out.println("ConcurrentServer_c146");
getLFDNR3(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "146").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println("lfdnr3 passt nicht");
}
}
private void c145(Context context) {
System.out.println("ConcurrentServer_c145");
getLFDNR2(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "145").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println("lfdnr2 passt nicht");
}
}
private void c144(Context context) {
System.out.println("ConcurrentServer_c144");
final String PREFS_NAME = "prefs";
final String COMMAND = "command";
final String LANE = "lane", DINYMIN ="dinymin", DINYSEK="dinysek";
getLFDNR1(context);
if (w1 == diny4||(w1-1)==diny4)
switch (diny5) {
case (00):
case (79): {
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(LANE, "144").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(COMMAND, "79").commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYMIN, Integer.valueOf(dinymin).toString()).commit();
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
.edit().putString(DINYSEK, Integer.valueOf(dinysek).toString()).commit();
}
break;
}
else {
System.out.println(w1+ "+"+ diny4);
System.out.println("lfdnr1 passt nicht");
}
}
public ConcurrentServer(Context context) {
System.out.println("ConcurrentServer_Context");
this.context = context;
}
}
如果您认为您也需要网络代码,请告诉我。顺便说一句:这是我现在的代码,经过试验和尝试了很多东西。所以如果任何东西翻倍,这就是原因。由于我是 Android 的新手,这可能发生在我身上。
谢谢。
编辑:
Class Stacker 提供的这个链接非常好。它详细而精确。对于遇到问题的任何人,请检查以下内容:
http://docs.oracle.com/javase/tutorial/networking/urls/index.html
再次感谢 Class Stacker!
最佳答案
请注意,根据您的 Android 版本,AsyncTasks 不会并行执行,除非您明确指定执行程序。
我想您必须主动连接到转换器设备。如果是这样,则您没有服务器套接字;它实际上是一个客户端套接字。
我不明白为什么一路上要创建这么多套接字;套接字是双向通信 channel 。
如果您确实需要一个服务器套接字,您可以等待传入的连接,您可以accept()
和accept()
将为您提供特定于客户端的套接字。
这有帮助;如果不是,就我而言,您需要使用有关您正在连接的设备的信息更新您的问题。
关于java - Android 中的服务器-客户端故障(套接字未绑定(bind)/套接字已在使用中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14581866/
谁能解释一下 Server.MapPath(".")、Server.MapPath("~")、Server.MapPath(@"之间的区别\") 和 Server.MapPath("/")? 最佳答案
我不知道,为什么我们要使用 Server.UrlEncode() & Server.UrlDecode()?!在 QueryString 中我们看到 URL 中的任何内容,那么为什么我们要对它们进行编
我已经通过 WHM 在我的一个域上安装了 ssl 证书。网站正在使用 https://xyz.com . 但是它不适用于 https://www.xyz.com .我已经检查了证书,它也适用于 www
我已经使用 WMI 检测操作系统上是否存在防病毒软件,itz 正常工作并通过使用命名空间向我显示防病毒信息,例如 win xp 和 window7 上的名称和实例 ID:\root\SecurityC
我们有 hive 0.10 版本,我们想知道是否应该使用 Hive Server 1 或 Hive Server2。另一个问题是连接到在端口 10000 上运行的 Hive 服务器,使用 3rd 方工
我想在 C++ 中使用 Windows Server API 设置一个 HTTPS 服务器,我使用了示例代码,它在 HTTP 上工作正常,但我就是不能让它在 HTTPS 上工作。 (我不想要客户端 S
我写了一个非常基本的类来发送电子邮件。我用 smtp 服务器对其进行了测试,它工作正常,但是当我尝试使用我公司的交换服务器时,它给出了这个异常: SMTP 服务器需要安全连接或客户端未通过身份验证。服
我的应用程序包含一个“网关”DataSnap REST 服务器,它是所有客户端的第一个访问点。根据客户端在请求中传递的用户名(基本身份验证),请求需要重定向到另一个 DataSnap 服务器。我的问题
我有一个 Tomcat 服务器和一个 Glassfish4 服务器。我的 Servlet 在 Tomcat 服务器上启动得很好,但在 Glassfish4 服务器上给我一个“HTTP Status 4
我在 vmware 上创建了一个 ubuntu 服务器。我用它作为文件服务器。如果我通过托管虚拟机的计算机进行连接,则可以访问它。我无法从同一网络上的其他计算机执行此操作。提前致谢! 最佳答案 首先确
如何重启 Rails 服务器?我从 开始 rails server -d 所以服务器是分离的 我知道的唯一方法就是去做ps 辅助 | grep rails 并 kill -9关于过程#但是像这样杀死进
我实际上正在尝试找到编写一个简单的 XMPP 服务器的最佳方法,或者找到一个占用空间非常小的服务器。我只关心XMPP的核心功能(状态、消息传递、群组消息传递)。目前还在学习 XMPP 协议(proto
我实际上正在尝试找到编写简单 XMPP 服务器的最佳方法,或者找到一个占用空间非常小的方法。我只关心 XMPP 的核心功能(统计、消息、组消息)。目前也在学习 XMPP 协议(protocol),所以
我们正在尝试从 Java JAX-RS 适配器访问 SOAP 1.1 Web 服务。 我们正在使用从 WSDL 生成的 SOAP 客户端。 但是当解码 SOAP 故障时,我们得到以下异常: ... C
目前,我和许多其他人正在多个平台(Windows、OS X 和可能的 Linux)上使用 Python HTTP 服务器。我们正在使用 Python HTTP 服务器来测试 JavaScript 游戏
我有一个连续运行的服务器程序(C#/.NET 2.0 on Linux with mono),我想从 PHP 脚本连接到它以在网站上显示状态信息。 目的是创建一个(某种)实时浏览器游戏(无 Flash
所以我有一个单页客户端应用程序。 正常流程: 应用程序 -> OAuth2 服务器 -> 应用程序 我们有自己的 OAuth2 服务器,因此人们可以登录应用程序并获取与用户实体关联的 access_t
我们刚刚将测试 Web 服务器从 Server 2008 升级到 Server 2012 R2。我们有一个部署我们网站的批处理脚本。当它将站点推送到服务器时,它现在失败了。奇怪的是,我可以使用相同的发
建议一些加载SpagoBI服务器的方法,我尝试了所有方法来解析spagobi服务器。在 Catalina 中,错误是 - * SEVERE: Unable to process Jar entry [
当我们点击应用程序服务器(apache tomcat)时,它会创建一个线程来处理我们的请求并与 tomcat 连接,建立连接,tomcat 创建另一个线程来处理请求并将其传递给连接,连接线程将其传递给
我是一名优秀的程序员,十分优秀!