[英]Receive ios socket data in Java server
我必须实现一个Java服务器,该服务器从智能手机上运行的ios应用程序接收数据(字符串)。
不幸的是,我从来没有在类似的场景中工作过,所以我想知道是否有人可以给我一些从哪里开始的指针(或要研究的信息资源)。
我这里有用于创建套接字和发送数据的ios代码:
-(bool)createSocket {
sock = 0;
if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
NSLog(@"Failed to create socket, error=%s", strerror(errno));
return false;}
else {
return true;
NSLog(@"Socket created");
}
}
-(bool) send:(NSString*) msg ipAddress:(NSString*) ip port:(int) p
{
struct sockaddr_in destination;
unsigned int echolen;
int broadcast = 1;
if (socketCreated==false) {
NSLog(@"Socket assente");
return false;
}
else
{
/* Construct the server sockaddr_in structure */
memset(&destination, 0, sizeof(destination));
/* Clear struct */
destination.sin_family = AF_INET;
/* Internet/IP */
destination.sin_addr.s_addr = inet_addr([ip UTF8String]);
/* IP address */
destination.sin_port = htons(p);
/* server port */
setsockopt(sock,
IPPROTO_IP,
IP_MULTICAST_IF,
&destination,
sizeof(destination));
char *cmsg = [msg UTF8String];
echolen = strlen(cmsg);
// this call is what allows broadcast packets to be sent:
if (setsockopt(sock,
SOL_SOCKET,
SO_BROADCAST,
&broadcast,
sizeof broadcast) == -1)
{
perror("setsockopt (SO_BROADCAST)");
exit(1);
}
if (sendto(sock,
cmsg,
echolen,
0,
(struct sockaddr *) &destination,
sizeof(destination)) != echolen)
{
printf("Mismatch in number of sent bytes\n");
return false;
}
else
{
NSLog([NSString stringWithFormat:@"-> Tx: %@",msg]);
return true;
}
}
}
提前致谢
这可能是一个不错的起点: Java网络编程常见问题解答 。 另外,请记住,当您通过网络进行通信时,字符串只是字符串。 这不像您将以某种方式在Java中获取NSString;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.