「javasocket域」socketio 跨域
本篇文章给大家谈谈javasocket域,以及socketio 跨域对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中的socket是什么意思?
- 2、关于java多线程socket局域网聊天的问题
- 3、java中Socket通信问题:Socket通信是不是只能在局域网中用?
- 4、使用Java Socket实现广域网通信
- 5、java socket 广域网 ip端口都对 怎么无法建立连接呢?
- 6、JAVA中有Socket能否使用域名进行通信?
java中的socket是什么意思?
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
重要的Socket API:
java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。
. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。
. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。
注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
2ServerSocket类例子编辑
package com.lanber.socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
/**
* 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,
* 而后才可以向客户端发送信息,否则将会有运行时出错。
* @param args
*/
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(8888);
//服务器接收到客户端的数据后,创建与此客户端对话的Socket
Socket socket = ss.accept();
//用于向客户端发送数据的输出流
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//用于接收客户端发来的数据的输入流
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());
//服务器向客户端发送连接成功确认信息
dos.writeUTF("接受连接请求,连接成功!");
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3客户端的例子编辑
package com.lanber.socket;
importjava.io.DataInputStream;
import java.io.DataOutputStream;
importjava.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo {
/**
* @param args
*/
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket("localhost",8888);
//获取输出流,用于客户端向服务器端发送数据
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//获取输入流,用于接收服务器端发送来的数据
DataInputStream dis = new DataInputStream(socket.getInputStream());
//客户端向服务器端发送数据
dos.writeUTF("我是客户端,请求连接!");
//打印出从服务器端接收到的数据
System.out.println(dis.readUTF());
//不需要继续使用此连接时,记得关闭哦
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
关于java多线程socket局域网聊天的问题
new serverchat(sockets[num]).run(); 这个可不是多线程的使用方法啊。改为new serverchat(sockets[num]).start();
java中Socket通信问题:Socket通信是不是只能在局域网中用?
如果服务器是单机上网 那你需要知道的是服务器在nternet网上的地址
服务器访问 就看得出来 假设是58.100.15.199
那你修改192.168.209.1为 58.100.15.199 就可以了
如果服务器在局域网里 通过路由器上网的
那你是不能直接连接到局域网的服务器上的
那你得在路由器里设置端口映射 设置端口1234端口 映射到 192.168.209.1 1234端口
那样的话 然后同样方法获取到路由器在外网的IP 你socket连接这个路由器外网IP即可
实际上,很多上网时动态IP的,你可以安装花生壳之类的软件。获取动态IP
客户端解析花生壳域名就能得到服务器IP。很多路由器自带动态域名支持。
使用Java Socket实现广域网通信
是这样的,你的服务端在内网里面,内网连内网当然没问题,外网是不能找到内网的机器的,因为有路由器,除非你做路由映射,但这不是绝对的,是有一个nat打洞技术可以做到,就像QQ,没做任何处理也能连到内网的机器,你可以研究一下nat技术
java socket 广域网 ip端口都对 怎么无法建立连接呢?
应该是因为IP的问题,你可能走得是局域网上外网的,就像网吧,宿舍,家里一样,一个账号多个人用,那么这个账号的外网ip是只有一个的,一般是给了路由器的,路由器不一定是指买的那种,手机共享网络也属于路由器功能。路由器是由外网IP,连接路由的都是局域网IP,是通过路由间接访问的。
JAVA中有Socket能否使用域名进行通信?
getHostAddressprotected InetAddress getHostAddress(URL u) 获取主机的 IP 地址。如果主机字段为空或出现 DNS 错误,则会返回 null。 参数: u - URL 对象 返回: 表示主机 IP 地址的 InetAddress。 从以下版本开始: 1.3 /dd
javasocket域的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于socketio 跨域、javasocket域的信息别忘了在本站进行查找喔。
发布于:2022-11-22,除非注明,否则均为
原创文章,转载请注明出处。