小编Jam*_*ord的帖子

在客户端JAVA中调用socket.close()时,套接字未关闭服务器端

我在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)

java sockets multithreading inputstream

6
推荐指数
1
解决办法
2万
查看次数

facebook sdk android墙贴线休息

我正在制作一个应用程序,使用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)

谢谢,

詹姆斯福特

android facebook

5
推荐指数
1
解决办法
3555
查看次数

标签 统计

android ×1

facebook ×1

inputstream ×1

java ×1

multithreading ×1

sockets ×1