问题描述
我连接到wifi,并使用套接字发送数据。这是一台服务器,它可以通过inputStream正确获取数据。但是outputStream无法发送回数据。我添加outputStream.close();但仍然无法正常工作。
线程创建ServerSocket之后,它将调用套接字线程以进行输入输出。
public class SocketThread {
Socket socket ;
private InputStream inputStream;
private OutputStream outputStream;
private String resultJSON ;
public SocketThread( Socket socket ){ // construct
this.socket = socket ;
try {
inputStream = socket.getInputStream();
outputStream = socket.getoutputStream();
} catch (IOException e){
e.printstacktrace();
}
}
//@Override
public void run() { // any message from client
byte[] buffer = new byte[1024];
int bytes;
try {
bytes = inputStream.read(buffer);
resultJSON = new String(buffer,bytes);
System.out.println("GET : "+ resultJSON);
write(buffer,bytes);
} catch (IOException e) {
e.printstacktrace();
}
}
private void write(byte[] buffer,int bytes){
try {
outputStream.write(buffer);
outputStream.close();
System.out.println("WRITE : "+new String(buffer,bytes));
} catch (IOException e) {
e.printstacktrace();
}
}
public void cancel() { // after connect,we need to close the socket
try {
socket.close();
} catch (IOException e) {
System.out.println("cancel is wrong");
e.printstacktrace();
}
}
}
// ============================================= =========
Thread thread = new Thread() {
private ServerSocket serverSocket;
private SocketThread socketThread;
private String resultJSON;
@Override
public void run() {
try {
serverSocket = new ServerSocket(); // create a server
serverSocket.bind(new InetSocketAddress("10.10.100.35",8000));
while (true){
System.out.println("wait");
Socket socket = serverSocket.accept(); // wait call
System.out.println("OK");
connected(socket); // if called,connect it
socketThread.cancel();
}
} catch (IOException e) {
e.printstacktrace();
}
}
private void connected(Socket socket) {
if (socketThread != null) { // clear socketThread first
socketThread.cancel();
socketThread = null;
}
socketThread = new SocketThread(socket); // new a Thread
socketThread.run(); // go
}
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)