私はサーバーとクライアントでテキスト文字列を前後に渡して簡単なプログラムを作ろうとしています。私は接続に問題があります。私はソケット受け入れラインのすぐ下にテストプリントラインを持っていて、それは印刷されないので、そこに問題があると仮定しますが、もっと徹底的にチェックする方法がわかりません。Javaでソケット接続を受け入れることができない
私はこのプログラムをEclipseで作成しています。
import java.io.*;
import java.net.*;
public class HW2Q1S {
public static void main(String[] args) throws Exception {
try {
//connection
ServerSocket srvr = new ServerSocket(7654);
Socket skt = srvr.accept();
System.out.println(skt.getPort());
//data xfer
BufferedReader sIn = new BufferedReader(new InputStreamReader(skt.getInputStream()));
PrintWriter sOut = new PrintWriter(skt.getOutputStream(), true);
//string receiving
int count = 1;
String msg = "";
while((msg = sIn.readLine()) != null) {
while(count < 11) {
msg = sIn.readLine();
System.out.println("Received: "+ msg);
String returnMsg = msg.toUpperCase();
System.out.println("Capped: "+ returnMsg);
sOut.write(returnMsg);
count++;
}
} //end of read from client in while loop
if (count == 10) {
System.out.println("Max reached.");
}
srvr.close();
return;
}
catch(Exception e) {
System.out.println("Error caught: " + e);
}
} // end of main
} // end of class
そして、これはクライアントです::
これはサーバです
import java.util.Random;
import java.io.*;
import java.net.*;
public class HW2Q1C {
public static void main(String[] args) throws IOException {
String capped = "";
String temp = "";
try {
//make the connection
Socket skt = new Socket("localhost", 7654);
BufferedReader cIn = new BufferedReader(new InputStreamReader(skt.getInputStream()));
PrintWriter cOut = new PrintWriter(skt.getOutputStream(), true);
//send 11 strings
for (int i = 0; i < 11; i++) {
temp = Stringer();
cOut.write(temp);
System.out.println("Sending: " + temp);
}
//receive server strings
while(cIn.readLine() != null) {
capped = cIn.readLine();
System.out.println("From server: "+ capped);
}
skt.close();
} // end of connection try block
catch(Exception e) {
System.out.print("Whoops! It didn't work!\n");
}
} //end of main
static String Stringer() {
String msg, alpha;
msg = "";
alpha = "abcdefghijklmnopqrstuvwxyz";
Random rnd = new Random();
for (int i = 0; i < 10; i++) {
msg += alpha.charAt(rnd.nextInt(25));
}
return msg;
}
} //end of class
ありがとう!
例外が発生したと思いますが、スタックトレースは何ですか?あなたはそれをデバッグしようとしましたか? – Altoyyr
それは私が思ったものですが、コンソールには何もありません。それは完全に空です。 – TurtleOrRodeo
私はちょうどあなたのプログラムを実行し、私が見ることができる限り、接続そのものはうまくいきます。 srvr.accept()は、クライアントが接続するまで待機します(正しく動作します)。これは追加のヘルプの可能性があります。http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html – Altoyyr