upLoad를 호출 할 때마다 Java 콘솔이 인쇄를 허용하지만 아무것도 전송하지 않습니다.AsyncSocket은 Java 소켓 서버에 연결할 수 있지만 데이터를 쓸 수 없습니다.
writedata 호출을 didConnectToHost로 변경했는데 클라이언트가 데이터를 전송했다고 말하면서 Java Server 콘솔에서이 데이터를 어떻게 표시 할 수 있습니까?
이 내 자바 서버 코드 :
import java.net.*;
import java.io.*;
public class Server
{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server()
{
try
{
ss = new ServerSocket(8080);
while (true)
{
socket = ss.accept();
System.out.println("accepted");
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String line = in.readLine();
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
}
}
catch (IOException e)
{}
}
public static void main(String[] args)
{
new Server();
}
}
이 내 아이폰 클라이언트 코드 :
-(IBAction)upLoad{
NSError* error;
NSString* hostIP = @"127.0.0.1";
UInt16 port = 8080;
[aSocket connectToHost:hostIP onPort:port withTimeout:-1 error:&error];
NSData *dataToUpload = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
}
#pragma mark -
#pragma mark socketdelegate
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
connectionStatus.text = @"connected to server!";
NSData *dataToUpload = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:dataToUpload withTimeout:-1 tag:0];
}
- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag
{
connectionStatus.text = @"write complete!";
}
난 당신이 해결할 수있는 문제가 ESP 때, 당신은 당신의 예외를 인쇄하기보다는 그들을 무시하는 것이 좋습니다. 브라이언은 자바 측에서 문제가되지 않는 것으로 보인다고 주장했다. BTW : UTF-8을 보내는 경우 동일한 인코딩으로 읽어야합니다. –
서버는 한 번에 하나의 연결 만 허용합니다. 이것은 테스트에 영향을 미치지 않습니다. –
처음에는 코드를 실제로 잘못 읽었습니다. 그가 콘솔에서 다른 것을 보지 못하는 완벽한 이유가 있습니다. –