私は死んだ単純なチャットアプリケーションを作成でき、問題に直面しているのを見ていました...私のPCとクライアント私の電話では、クライアントが私のPCに接続して、私は自分のPCに行って、私が望むだけ多くのメッセージを書くことができ、彼らは私の電話(クライアント)に表示されますが、 1つのメッセージしか送信せず、それ以上のアイデアはありませんか?Android SDK、クライアントからサーバへの出力ストリームが機能しない
サーバー:
static OutputStream out;
static InputStream in;
String name = "Server";
public static void main(String args[]){
System.out.println("Server On");
//Server
new Thread(new Runnable(){
@Override
public void run(){
new Main().start();
}}).start();
//Scanner for text input
new Main().scrnn();
}
public void scrnn(){
Scanner lol = new Scanner(System.in);
if(lol.hasNext()){
try {
out.write((name + ": " +lol.nextLine().toString()).getBytes());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
scrnn();
}
public void start(){
try{
ServerSocket sok = new ServerSocket(42069);
while(true){
Socket sk = sok.accept();
in = sk.getInputStream();
out = sk.getOutputStream();
byte[] buffer = new byte[1024];
in.read(buffer);
String recievedData = new String(buffer);
System.out.println(recievedData);
out.write(recievedData.getBytes());
}
}catch(Exception e){
e.printStackTrace();
}
}
とクライアント:(アンドロイドフォン)
OutputStream out;
InputStream in;
Socket sk;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new Object[]{"Thanks for using Monsterchat"};
Button button = (Button)findViewById(R.id.buttonSend);
listView = (ListView) findViewById(R.id.listView);
new Thread(new Runnable() {
@Override
public void run() {
try {
sk = new Socket("10.0.0.9", 42069);
sk.setKeepAlive(true);
out = sk.getOutputStream();
in = sk.getInputStream();
//This will send fine but if you look at the button onclick it wont send that :(
out.write((name + " Joined the group!").getBytes());
//This is how i can send constant messages from the server though
listenForData();
}catch(Exception e){
e.printStackTrace();
}
}
}).start();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
out.write("succ".getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
}
public void listenForData() throws Exception{
byte[] buffer = new byte[1024];
in.read(buffer);
final String recievedData = new String(buffer);
runOnUiThread(new Runnable() {
@Override
public void run() {
//Update listView with new message
buildList(recievedData);
}
});
//Repeat
listenForData();
}
申し訳ありませんが、コードの多くはだ、とも何も間違って見えるlogcatで出力を取得していません
デバッグを試みましたか? –
はい、それはまったく正直で何もしませんでした、他のアイデアはありますか? –
'out.write((name +"グループに参加! ")。getBytes());'が正常に実行されていますか? –