为您找到与网络编程JAVA相关的共200个结果:
现在JAVA作为主流编程语言,如果想要学会java网络编程,需要掌握一定的基础,读文网小编在这里给大家带来java网络编程基础的相关知识,希望能帮到大家。
进行网络通信需要的三要素:ip、端口、协议
UDP:
将数据、源、目的封装成数据包,不需要建立连接
每个数据包限制在64K内
因无连接,是不可靠协议
不需要建立连接,速度快
TCP:
建立连接,形成传输数据的通道
在连接中进行大数据量传输
通过三次握手完成连接,是可靠协议
必须建立连接,是可靠协议
InetAddress类:
基本方法列举
getAddress()返回此 InetAddress 对象的原始 IP 地址。
getHostAddress()返回 IP 地址字符串(以文本表现形式)。
getHostName()获取此 IP 地址的主机名。
getAllByName(String host)在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
getByName(String host)在给定主机名的情况下确定主机的 IP 地址。
getLocalHost()返回本地主机。
isReachable(int timeout)测试是否可以达到该地址。
DatagramPacket类
需求:通过UDP传输协议将一段文字数据发送出去
思路:
1、建立udpSocket服务
2、提供数据并将数据封装到数据包中
3、通过Socket服务的发送功能将数据发送出去
4、关闭资源
面向Socket编程
Socket就是为网络服务提供的一种机制,对应于网络中的传输层,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。
无论是UDP的面向连接还是TCP的面向连接,我们面向的其实都是Socket。
Socket中的一些常用方法:
bind(SocketAddress bindpoint)将套接字绑定到本地地址。
connect(SocketAddress endpoint)&connect(SocketAddress endpoint, int timeout)将此套接字连接到服务器,且后者可以指定一个超时值。
getInetAddress()&getPort() 返回套接字连接的远程地址及端口。
getLocalAddress()&getLocalPort()获取套接字绑定的本地地址即端口。
getInputStream()&getOutputStream()返回此套接字的输入输出流。
shutdownInput()&shutdownOutput()禁用此套接字的输入流与输出流,即使同时调用了两方法也不能导致Socket关闭,另外shutdownOutput()方法通常用于告知服务端客户端发送结束。
URL类:
类URL代表一个统一资源定位符,它是指向互联网“资源”的指针。使用该类的openConnection()方法即可获取对应的URLConnection对象,也可以通过openStream()方法直接获取其所指向资源的输入流。
它也提供了一系列的get方法来提取封装在URL对象中的信息
URL中的基本方法:
getFile()获取此 URL 的文件名。
getHost()获取此 URL 的主机名(如果适用)。
getPath()获取此 URL 的路径部分。
getPort()获取此 URL 的端口号。
getProtocol()获取此 URL 的协议名称。
getQuery()获取此 URL 的查询部分。
URLConnection它代表应用程序和 URL之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。
创建一个到URL的连接需要几个步骤:
1、通过在 URL 上调用 openConnection 方法创建连接对象。
2、处理设置参数和一般请求属性。
3、使用 connect 方法建立到远程对象的实际连接。
4、远程对象变为可用,远程对象的头字段和内容变为可访问。
UDP实现发送和接收数据操作
发送端代码实例:
import java.io.*;
import java.net.*;
class UdpSend{
public static void main(String args[]) throws Excption{
DatagramSocket ds = new DatagramSocket();
byte[] buf = "abcde".getByte();
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddreass.getByName(" 127.0.0.1 "), 10000);
ds.send(dp);
ds.close();
}
}
接收端代码实例:
import java.io.*;
import java.net.*;
class UdpReve{
public static void main(String args[]) throws Excption{
DatagramSocket ds = new DatagramSocket(10000);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getDate(), 0, dp.getLength());
int port = dp.getPort();
System.out.println(ip+ "--" +data+ "--" +port);
ds.close();
}
}
https://使用while(true)使接收端持续开启
练习:将本地图片上传到服务器,代码实现:
客户端代码实现:
public class PicClient {
public static void main(String args[]) throws Exception{
Socket s = new Socket("117.84.140.104", 10001);
FileInputStream fis = new FileInputStream("C:\Users\Administrator\Desktop\1.jpg");
OutputStream out = s.getOutputStream();
byte[] buf = new byte[1024];
int ch = 0;
while((ch = fis.read(buf)) != -1){
out.write(buf, 0, ch);
}
s.shutdownOutput();
InputStream in = s.getInputStream();
ch = in.read(buf);
System.out.println(new String(buf, 0, ch));
fis.close();
s.close();
}
}
服务器端代码实现:
public class PicServer {
public static void main(String args[]) throws Exception{
ServerSocket ss = new ServerSocket(10001);
Socket s = ss.accept();
InputStream in = s.getInputStream();
FileOutputStream fis = new FileOutputStream("C:\Users\Administrator\Desktop\2.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len = in.read(buf)) != -1){
fis.write(buf, 0, len);
}
OutputStream out = s.getOutputStream();
out.write("上传完毕".getBytes());
}
}
浏览量:4
下载量:0
时间:
Unix和Windows同样是由美国的贝尔实验室所开发的独立分时操作系统,它的操作简洁,界面优化好,是编程人员必须熟悉理解的一类操作系统之一。而网络编程是操作系统开发的一项重要内容,尤其是在网络编程中的I/O模型研究是非常重要的一项任务,那么在Unix网络编程中,都有哪些I/O模型呢?读文网小编来告诉你
所谓异步指的就是操作反应方式和顺序有些与众不同,异步模型中,是内核在进行数据拷贝完毕之后才会通知我们完成了相关的操作。配合信号驱动的I/O模型,当内核工作完毕之后就能够发送相关的操作信号,并通知我们进行下一步的操作,这就是异步I/O模型。
浏览量:2
下载量:0
时间:
今天就有读者问读文网小编我了,Linux网络编程怎么使用多进程实现服务器并发访问?然后读文网小编我通过查阅相关资料后,就把相关的解决方法分享到这里吧,以下就是具体内容:
采用多进程的方式实现服务器的并发访问的经典范例。
viidiot@ubuntu$ ./discli 127.0.0.1
hello,world!(客户端输入的内容)
hello,world!(服务器端返回的内容)
浏览量:2
下载量:0
时间:
由于很多读者都不清楚Linux网络编程socket,那么这里就由读文网小编为大家介绍一下Linux网络编程socket吧:
建立套接字socket()--->与服务器建立连接connect()
详细代码如下:
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[]) {
int sockfd; char buf[1024];
struct sockaddr_in srvaddr;
struct hostent *phost; int nbytes;
if(argc!=3){
fprintf(stderr,"Usage:%s a",argv[0]);
exit(1);
}
/* 客户程序开始建立 sockfd描述符 */
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
fprintf(stderr,"socket Error:%sa",strerror(errno));
exit(1);
}
/* 客户程序填充服务端的资料 */
bzero(&srvaddr,sizeof(srvaddr));
srvaddr.sin_family=AF_INET;
srvaddr.sin_port=htons(atoi(argv[2]));
if (inet_pton(AF_INET, argv[1], &srvaddr.sin_addr) <= 0){
fprintf(stderr,"inet_pton Error:%sa",strerror(errno));
exit(1);
}
/* 客户程序发起连接请求 */
if(connect(sockfd,(struct sockaddr *)(&srvaddr),sizeof(struct sockaddr))==-1){
fprintf(stderr,"connect Error:%sa",strerror(errno));
exit(1);
}
/* 连接成功了 */
if((nbytes=read(sockfd,buf,1024))==-1){
fprintf(stderr,"read Error:%s",strerror(errno));
exit(1);
}
buf[nbytes]='