1.Socket通讯:
在说java实现的Socket通讯之前先说说Socket通讯。Socket是一个网络通讯面向应用开发的一个底层协议,很多操作系统都是建立在这个协议基础上,对网络进行通讯的。而很多语言在通讯这块的实现也是基于Socket的,所以说Socket它不是一种具体的东西。还有很多TCP/IP应用层协议,都是建立在Socket的基础之上的,例如Http协议,它就是建立在Socket基础上面对web的一个特点领域的应用协议。
2.java的网络通讯实现:
实现TCP协议的通讯:
(1)ServerSocket:
ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException
backlog:指定客户连接队列的长度,通讯是并发的,所以需要考虑这个指标。
InetAddress:指定服务器绑定地址。
关于默认构造方法:作用是允许服务器在绑定到特定端口之前,先设置ServerSocket的一些选项。因为一旦服务器与特定端口绑定,有些选项就不能再改变了。
bind(SocketAddress endpoint, int backlog):API中的方法也是为这个构造提供绑定接口所用。
setReuseAddress(boolean on) :设置的是主服务监听的端口可以重用,但是它必须在设置端口前调用才有效,所以此时必须用无参构造。
setSoTimeout(int timeout):设置超时时间,0为无限时间,如果超时会报出异常。
setReceiveBufferSize (int size):设置缓冲区的大小,ServerSocket端设置此大小则所有的Socket都用此大小,除非Socket自己单独设置一个新的缓冲值。
accept():获取连接请求,获取一个队列里面就会少一个。另外,Socket的获取是调用本地方法,不是java自己实现的。:默认情况下不设置地址,地址为本地。如果端口为0,即表示由系统自由分配,一般最好分配一个端口。默认的连接数是50。关于连接数,以及连接的具体实施者都是操作系统,API只是起到调用的效果,而这里设置的连接数也会在两种情况下无效:1.backlog的值大于操作系统的队列值。2.backlog小于0。
Socket:如下面的用法,这个方法与ServerSocket的内容差不多,只是这个是发送请求的,ServerSocket是接收请求的。
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String args[]) {
try {
ServerSocket ss = new ServerSocket(65000);
while (true) {
Socket sk = ss.accept();
InputStream inStream = sk.getInputStream();
DataInputStream dis = new DataInputStream(inStream);
System.out.println(dis.readUTF());
dis.close();
sk.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClient {
public static void main(String args[]) {
try {
Socket sk = new Socket("127.0.0.1", 65000);
OutputStream outStream = sk.getOutputStream();
DataOutputStream dos = new DataOutputStream(outStream);
dos.writeUTF("hello server!");
dos.flush();
dos.close();
sk.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
实现UDP协议的通讯:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPServer {
public static void main(String args[]) {
try {
byte[] buffer = new byte[1024];
DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
DatagramSocket ds = new DatagramSocket(6666);
ds.receive(dp);
System.out.println(new String(buffer, 0, dp.getLength()));
ds.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class UDPClient {
public static void main(String args[]) {
try {
byte[] buffer = (new String("Hello")).getBytes();
DatagramPacket dp = new DatagramPacket(buffer, buffer.length,
new InetSocketAddress("127.0.0.1", 6666));
DatagramSocket ds = new DatagramSocket(5678);
ds.send(dp);
ds.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
java socket 通讯例子附有源码 希望还不太理解java socket的原理的朋友,通过这3个简单到复杂的例子有锁帮助。 详细说明请下载。
JAVA SOCKET通讯程序
网络调试助手(NetAssist)java socket通讯代码,java代码,有看不懂的可以参考博客https://blog.csdn.net/qq_39400208/article/details/81096436 java socket Javaso netass 网络调试助手。 自己编写的JAVA程序,...
AS与java socket通讯 解决安全沙箱 服务端用JAVA写的 用其他语言写的服务端 可以参考一下 都差不多的 这是网上COPY的那种方法所改进的,可以运行的。
在Java中用socket进行客户/服务器之间的通信编程。Socket是两个实体之间进行通信的有效端点。通过socket可以获得源IP地址和源端口、终点IP地址和终点端口。用户可以将多个socket连入同一个端口,以便对于单个端口...
网络调试助手(NetAssist)java socket通讯代码,java代码,有看不懂的可以参考博客https://blog.csdn.net/qq_39400208/article/details/81096436
Java socket通讯实现,可以相应多个客户端,服务器端将客户端请求处理后转发给客户端。
在主线程中通过控制台读取键盘...服务器在收到一个socket连接之后,把该socket保存到队列中,并对队列中的每个socket开启各自的读写线程。测试可以在不同控制台运行server和client,服务器接收消息时,会显示消息来源
java socket USB和 串口通讯,使用java程序与硬件通讯的三种方式。
里面使用了Socket 和线程 初学者可以看看。我每一行都写了注释的 应该能看懂吧。
java 写socket通讯 发送信息 接收数据
Java应用Socket通讯一对多: ⑴、一对多; ⑵、通过list/map存储连接的socket对象,服务端向所有客户端群发消息,可以修改为服务端向指定客户端发送消息; ⑶、自动定时扫描客户端,移除断开的连接。
主要介绍了Java socket通讯实现过程及问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java socket 即时通讯服务器开发,
基于java的即时通讯工具,不局限于局域网
用JAVA的socket编程,做的一个简单即时通讯程序。。很简单
利用Java开发的socket客户端和服务端远程RPC通信框架,利用了动态代理和反射技术,
Java网络编程socket通讯简单封装(使用多线程)
Java_Socket通讯源代码,包含服务端和客户端,基于TCP/IP模式,支持GB级别数据传送,包含发送,接收,确认及回发模式.通过这个例子,让你与Socket通讯全接触!绝对经典!
java Socket即时通讯看了很多教程也弄不明白,那看看这个把,直接放在tomcat下就可以用,jar包有,xml有,jsp什么都写好的,用的时候把jsp里面的ip改成你的ip就行。端口也变一下