Я пытаюсь создать простую клиентскую программу сервера, которая позволяет мне отправлять значение ползунка с клиента IOS на сервер java. Я застрял сейчас, потому что получаю данные, которые я не знаю, как обращаться. Я ищу небольшое руководство. Я предоставлю код клиента и серверный код, который у меня есть до сих пор. Я хочу узнать больше о сокетах и оценить любую помощь, которую я могу получить. Прямо сейчас я просто хочу иметь возможность отправлять строку из IOS и печатать ее на консоли в java. Я просто хочу начать с тестовой строки. Моя конечная цель - отправить значение ползунка на сервер в реальном времени, преобразуя значение float в строку, а затем обратно на java-стороне.Данные слайдера ios для java-сервера с использованием tcp-сокета
IOS Client Code
#import "ViewController.h"
@interface ViewController() <NSStreamDelegate>
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self TcpClientInitialise];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)SliderDidChange:(id)sender {
UISlider *slider = (UISlider *)sender;
float val = slider.value;
self.SliderLabel.text = [NSString stringWithFormat:@"%f",val];
[self TcpClientInitialise];
NSString *response = @"HELLO1234";
NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
[OutputStream write:[data bytes] maxLength:[data length]]; //<<Returns actual number of bytes sent - check if trying to send a large number of bytes as they may well not have all gone in this write and will need sending once there is a hasspaceavailable event
NSLog(@"Sent data on output stream");
[InputStream close];
[OutputStream close];
}
- (void)TcpClientInitialise
{
NSLog(@"Tcp Client Initialise");
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"127.0.0.1", 7896, &readStream, &writeStream);
InputStream = (__bridge NSInputStream *)readStream;
OutputStream = (__bridge NSOutputStream *)writeStream;
[InputStream setDelegate:self];
[OutputStream setDelegate:self];
[InputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[OutputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[InputStream open];
[OutputStream open];
}
...
...
...
и Java-код ...
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Handler;
public class TCPServer {
private static PrintStream outputStream;
@SuppressWarnings("deprecation")
public static void main(String[] args) {
System.out.println("Main Test");
ServerSocket statusServer = null;
String number = null;
DataInputStream inputStream = null;
outputStream = null;
Socket clientSocket = null;
// Try to open a server socket on port 7896
try {
statusServer = new ServerSocket(7896);
System.out.println("ServerSocket status server made");
}
catch (IOException e) {
System.out.println(e);
System.out.println("status server failed");
}
// Create a socket object from the ServerSocket to listen and accept
// connections.
// Open input and output streams
try {
while(true){
System.out.println("waiting for socket accept");
clientSocket = statusServer.accept();
System.out.print("socket accepted and returns: ");
System.out.println(statusServer.accept());
inputStream = new DataInputStream(clientSocket.getInputStream());
number = inputStream.toString();
System.out.print("inputStream = ");
System.out.println(number);
inputStream.close();
clientSocket.close();
//outputStream = new PrintStream(clientSocket.getOutputStream());
}
} catch (IOException e) {
System.out.println(e);
}
}
}
Я понимаю, что способ соединения решаются очень неаккуратно и оценить любые предложения. я могу получить некоторые данные, поступающие через к стороне Java, когда я двигаю ползунок на IOS, это выглядит, как это в консоли:
Main Test
ServerSocket status server made
waiting for socket accept
socket accepted and returns: Socket[addr=/127.0.0.1,port=61576,localport=7896]
inputStream = [email protected]
waiting for socket accept
socket accepted and returns: Socket[addr=/127.0.0.1,port=61578,localport=7896]
inputStream = [email protected]
Это является [email protected], что я не знаю как обращаться.