我在java中使用套接字时遇到问题.我有一个ServerSocket正在使用accept()监听并为每个客户端请求生成线程.客户端和服务器之间的通信工作正常.我正在使用输入流从serverthreads中的客户端读取数据,例如:
inputStream = mySocket.getInputStream();
bytes = inputStream.read(buffer);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我从客户端调用socket.close(),阻塞调用没有任何反应bytes = inputStream.read(buffer);,它会继续阻塞.但是如果我从服务器关闭套接字,然后inputStream.read(buffer);客户端返回"-1" ,它就有效.
SERVER-MAINTHREAD:
//SERVER MAIN THREAD, SPAWNS CLIENT THREADS
ServerSocket serverSocket = new ServerSocket(SERVERPORT);
while (listening){
new ServerThread(serverSocket.accept(), monitor).start();
}
Run Code Online (Sandbox Code Playgroud)
SERVER-CLIENTTHREADS:
public class ServerThread extends Thread{
public ServerThread(Socket socket, Monitor monitor) {
this.socket = socket;
this.monitor = monitor;
}
public void run(){
byte[] buffer = new byte[1024];
int bytes;
//Listen
while(true){
try {
InputStream inputStream = socket.getInputStream();
monitor.doStuffWithOtherThreads(Object myObject);
bytes = inputStream.read(buffer); //Problem
if (bytes …Run Code Online (Sandbox Code Playgroud) 我正在制作一个应用程序,使用facebook sdk for android将一些信息发布到你的Facebook墙上.这样可行,但我似乎无法在帖子上获得新的内容.我已经尝试了,\n但它做了很多工作.有什么建议?
这是我的代码:
Bundle parameters = new Bundle();
String temp = "";
for (int i = 0; i < mArrayAdapter.getCount(); i++){
temp = temp + mArrayAdapter.getItem(i) + "\n"; // Not working
}
parameters.putString("message", temp);
mFacebook.dialog(this, "stream.publish", parameters, new DialogListener());
Run Code Online (Sandbox Code Playgroud)
谢谢,
詹姆斯福特