网络编程基础教程课后答案(网络编程实用教程答案)
网络编程基础——常见 API 总结
这个 API 常用来做 DNS 查询,用法如下:
返回一个 status 值,如果 status == 0 则失败,这里有一个详细的例子,转自( ):
最后用 freeaddrinfo() free 掉内存
下面我们正式讲述与 socket() 相关的 API
作用:用 socket() 拿到 socket 描述符
用法如下:
每个参数的意义如下:
domain 的值可能是 PF_INET(ipv4) 或者 PF_INET6(ipv6),我们输出一下这个值:
其实 AF_INET 和 PF_INET 是一样的东西。
我们要做的其实是: 在 struct sockaddr_in 中使用 AF_INET,在调用 socket() 中使用 PF_INET
结合 getaddrinfo() 我们通常这样使用:
socket() 只返回一个 socket 描述符用于之后的系统调用,或者 -1 表示错误
作用:bind ip 和 port
bind() 函数如下:
参数意义如下:
sockfd 文件描述符,my_addr ip 地址以及端口,addrlen 地址长度,区分 ipv4,ipv6
来让我们看一个例子
这里使用了 AI_PASSIVE 作用是:告诉程序去绑一个正在运行的主机 ip,各位可以试着去输出一下,很奇怪的 ip。如果你想绑定一个特定的本地 ip。那么就不要使用 AI_PASSIVE 并给 getaddrinfo() 第一个参数提供 ip
如果 bind() 错了,也会返回 -1
在客户端的时候(不用关心绑定的端口号)不需要使用 bind(),直接调用 connect() 函数就好,它会检查 socket 有没有绑定,如果没有 bind 就会自己 bind 到一个没有用过的端口号上
作用:建立连接
用法如下:
从参数名就可以知道每个参数的含义
而且为了连接服务器,只需要 getaddrinfo() 提供的 res。比如:
connect 也会返回一个 errno,如果为 -1 就说明没连接上。
作用:监听端口
用法如下:
这里出现了一个我们从未接触的参数 backlog 简单来说, backlog 参数指定队列将保留的挂起连接数 。
大多数系统默默地将此数量限制在 20 左右;你可以把它设置为 5 或 10。同样它也会返回 -1 表示错误。而且,我们要在 bind() 后才能使用 listen(),只有这样才能控制 listen 的端口
大概这样使用
作用:在 listen 中我们说到有一个等待连接的队列,队列中的每一个连接都等待着唤醒。accept() 用来唤醒队列中的连接。
用法如下:
accept() 会返回一个新的 socket 描述符,现在你有两个 socket 描述符,原来那个依旧在监听连接。新的这个描述符已经准备使用 send() 和 recv() 了。
我们注意一下第二个参数,通常是 sockaddr_storage (与 sockaddr 兼容),在错误发生时 accept() 同样也会返回 -1
大概这样使用:
作用:接发数据
用法如下:
在 send() 函数中返回值是发送的字节长度,很可能比你提供的参数 len 要小,比如你要发送大数据的时候,它尽量去发最大数据,但还是可能没有那么长于是会丢掉多的数据。要记住! 如果返回的长度小于你提供的参数 len,那么是你去决定是否要补全剩下的数据 。
返回 -1,代表着错误。
recv() 函数差不多,如果发生错误,也会返回 -1。但是也可能返回 0。原因是:远程机器关闭了与你的连接。
作用:UDP 的 send() 和 recvfrom()
用法如下:
由于 UDP 不需要连接,所以需要手动的填上参数。
作用:关闭连接
用法如下:
close() 就是最简单的关闭文件的方式,所以同样可以用在 socket 上。而且一旦某个 socket 被 close 了,试图在远端读或写这个 socket 都会收到 error
而 shutdown() 函数有那么一些不一样。它允许你给出关闭连接的方向 how
how 有三个值
值得注意的是: shutdown() 并不是真正关闭 socket 描述符,只是让它不能使用。如果要去除 socket 描述符的占用。你还是需要使用 close()
作用:得到对方的信息
用法如下:
获得地址(addr)后,可以使用 inet_ntop(),getnameinfo() 或 gethostbyaddr() 来打印或获取更多信息。但是,你不能得到他们的登录名。 但是如果对方程序正在跑一个 ident 守护进程,你还是有可能得到对方的登录名的
这个函数更简单了
作用:得到自己的信息
用法如下:
参数很简单:hostname 是一个指向字符数组的指针,它将包含函数返回的主机名,size 是 hostname 数组的字节长度。成功完成时函数返回 0,错误时返回 -1
前面写了那么多,现在用一张图来总结一下吧:

吉林大学网络学院本学期(Java网络编程大作业)有知道答案的吗?
吉林大学网络教育
大作业
一、 一饱和粘土试样在三轴仪中进行固结不排水试验,施加围压σ3=200kpa,试样破坏时的主应力差σ1—σ3=300 kpa,测得孔隙水压力uf=180kpa,整理试验结果得有效内磨擦角φ =30°,有效黏聚力c=75.1kpa。如果破坏面与水平面的夹角为60°,试问:
(1)破坏面上的法向应力与剪应力以及试样中的最大剪力(20分)
(2)说明为什么破坏面发生在的平面而不是发生在最大剪应力的作用面(20分)
(3)画出试样破坏的摩尔圆及强度包线(10分)
二、如下图所示,挡土墙高5米,墙后填土二层,第一层为砂土,第二层为粘性土,具体参数见图中所示。试用朗肯土压力公式计算挡土墙上的主动土压力公布和被动土压力公布(50分)
有几个java网络编程基础的选择题 哪位大神给下答案
、Applet为一种特殊的Panel,它可作为Java Applet程序的最外层容器。 ( )
2、Java的源码中定义多少个类,编译后结果就生成多少个以.class为后缀的字节码文 ( )
3、Java程序中,使用关键字new创建新的类对象,使用关键字free回收无用的类对象。 ( )
4、Java有垃圾回收机制,可在指定的时间使用内存回收程序释放内存对象。 ( )
5、构造函数用于创建类的实例对象,返回类型为void,构造函数名应与类名相同。 ( )
6、在异常处理中,假设try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父子关系,此时应该将子类放在前面,父类放在后面。 ( )
7、含有abstract方法的类是抽象类,而抽象类中可以没有abstract方法。 ( )
8、Java的屏幕坐标以像素为单位,容器的左下角被确定为坐标的起点。 ( )
9、静态初始化器是在其所属的类加载内存时由系统自动调用执行。 ( )
10、在Java中可使用赋值号( )对对象赋值,相当于生成了一个各属性与赋值对象相同的新对象。 ( )
11、MVC是Model-View-Controller的简写。"View" 是应用的表示面(由JSP页面产生)。( )
12、MVC是Model-View-Controller的简写。"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型控制应用逻辑。( )
13、Tomcat是支持JSP引擎的一种服务器软件,可以通过server.xml文件修改服务器的配置信息。( )
14、通过Request.getParameterValues()可以获得某个参数的多个值( )
15、运行JSP需要有JSP引擎,Tomcat是支持JSP的Web服务器的一种。( )
16、Jsp使用的是Java脚本代码,可跨平台运行,运行开销小,具有速度快,可扩展性好及支持分布式处理等特点。 ( )
17、在定义了Bean的属性后,可不创建属性方法。( )
18、if语句是Java的条件分支语句,它控制程序以两条路径执行。( )
19、包是类的容器,用于保证类名空间的一致性。( )
20、JSP中不能使用HTML中的“!-- --”注释方式,只能使用JSP的“!-- --”的注释方式。
答案:仅供参考
T T F T T T T F T F T T T F F F T T T F
21.Java application中的主类必须包含方法main,以下哪项是main方法的正确参数?( )
A、 String args B、String ar[] C、Char arg D、StringBuffer args[]
22.以下对继承的正确描述是( )。
A、在Java中类只允许单一继承
B、在Java中一个类只能实现一个接口
C、在Java中一个类不能同时继承一个类和实现一个接口
D、在Java中接口只允许单一继承
23.paint()方法中的参数可使用哪种类型? ( )
A、Graphics B、Graphics2D C、String D、Color
24.以下不属于Java基本数据类型的是( )
A、int B、Boolean C、float D、char
25.以下哪项可能包含菜单条( )。
A、Panel B、Frame C、Applet D、Dialog
26.应使用哪种修饰符定义一个类域或类方法?( )
A、static B、package C、private D、public
27.在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行( )。
A、init() B、start() C、destroy() D、stop()
28.参考以下代码,关于该程序以下哪个说法是正确的?( )
public class Person{
static int arr[] = new int[3];
public static void main(String a[])
{
System.out.println(arr[0]); }
}
A、编译时将产生错误 B、编译时正确,运行时将产生错误
C、输出零 D、输出空
29.下列语句中,哪些关于Java内存回收的说明是正确的? ( )
A、程序员必须创建一个线程来释放内存
B、内存回收程序负责释放无用内存
C、内存回收程序允许程序员直接释放内存
D、内存回收程序可以在指定的时间释放内存对象
30.以下关键字中,可以用来对对象加互斥锁的是?( )
A、transient B、synchronized C、 serialize D、static
31.以下代码段执行后的输出结果为( )
int x=-3; int y=-10;
System.out.println(y%x);
A、 -1 B、2 C、1 D、3
32.有以下程序片段,下列哪个选项不能插入到行1。( )
1.
2.public class Interesting{
3.//do sth
4. }
A、import java.awt.*; B、package mypackage;
C、class OtherClass{ } D、public class MyClass{ }
33.假设有如下两个赋值语句:
a = Integer.parseInt(“5”);
b = Integer.valueOf(“5”).intValue();
下述说法正确的是( )。
A、a是整数类型变量,b是整数类对象。 B、a是整数类对象,b是整数类型变量。
C、a和b都是整数类对象并且值相等。 D、a和b都是整数类型变量并且值相等。
JAVA网络编程基础试题!300分!请一定要帮我做一下,两个解答题。一个编程题,重点是编程题,谢谢了!!
2.百度百科搜索很详细
3.附件中的代码仅供参考
TcpSocketServerDemo.java
package?yaoshun.InetAddress;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.IOException;
import?java.net.ServerSocket;
import?java.net.Socket;
import?java.util.ArrayList;
import?java.util.List;
import?java.util.Random;
/*
?*?客户端:TCP服务器端
?*/
public?class?TcpSocketServerDemo?{
private?ServerSocket?serverSocket;//?服务器连接
private?int?port;?//?服务器监听端口
private?ListSocket?sockets;
private?int?ranNumber;
/**
?*?服务器结束的标志
?*/
public?boolean?ISEND;
public?TcpSocketServerDemo(int?port)?{
this.port?=?port;
serverSocket?=?null;
sockets?=?new?ArrayListSocket();
ranNumber?=?new?Random().nextInt(50);
}
/*
?*?启动服务器
?*/
public?void?starServer()?{
try?{
//?第一步:建立服务器连接(绑定监听端口)
serverSocket?=?new?ServerSocket(port);
System.out.println("姚舜的服务器已经启动...");
Socket?socket;//?客户端连接(如果建立连接时,本机网络不容或服务器程序未启动则会抛出异常)
ServerThread?serverThread;
Thread?t2;
while?(!ISEND)?{
//?第二步:监听端口(获取客户端连接)
socket?=?serverSocket.accept();
if?(ISEND)?{
while?(!socket.isClosed())?{
socket.close();
Thread.sleep(100);
}
}?else?{
sockets.add(socket);
serverThread?=?new?ServerThread(this,?socket);
t2?=?new?Thread(serverThread);
t2.start();
}
}
for?(Socket?s?:?sockets)?{
s.close();
}
serverSocket.close();
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
public?static?void?main(String[]?args)?{
TcpSocketServerDemo?tDemo?=?new?TcpSocketServerDemo(1000);
tDemo.starServer();
}
/**
?*?校验
?*?
?*?@param?i
?*?@return
?*/
public?int?check(int?i)?{
if?(i??ranNumber)?{
return?-1;
}?else?if?(i??ranNumber)?{
return?1;
}
return?0;
}
}
/**
?*?服务端处理线程
?*
?*/
class?ServerThread?implements?Runnable?{
private?TcpSocketServerDemo?tDemo;
private?Socket?socket;
private?DataInputStream?dis;//?输入流(读取数据)
private?DataOutputStream?dos;//?输出流(发送数据)
public?ServerThread(TcpSocketServerDemo?tDemo,?Socket?socket)?{
super();
this.tDemo?=?tDemo;
this.socket?=?socket;
try?{
dis?=?new?DataInputStream(socket.getInputStream());
dos?=?new?DataOutputStream(socket.getOutputStream());
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
public?void?run()?{
String?message?=?"";
int?i;
int?index?=?0;
int?result?=?0;
while?(!message.equals("Quit")??index??5)?{
try?{
message?=?dis.readUTF();
}?catch?(IOException?e)?{
e.printStackTrace();
}
try?{
i?=?Integer.parseInt(message);
result?=?tDemo.check(i);
if?(result?==?1)?{
dos.writeUTF("数字大了");
}?else?if?(result?==?-1)?{
dos.writeUTF("数字小了");
}
if?(result?==?0)?{
dos.writeUTF("猜中了");
break;
}
}?catch?(NumberFormatException?|?IOException?e)?{
continue;
}
index++;
}
try?{
dis.close();
dos.close();
socket.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}
TcpSocketClientDemo.java
package?yaoshun.InetAddress;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.IOException;
import?java.net.Socket;
import?java.net.UnknownHostException;
import?java.util.Scanner;
/*
?*?演示类:TCP客户端
?*/
public?class?TcpSocketClientDemo?{
private?Socket?socket;//?客户端连接(如果建立连接时,本机网络不容或服务器程序未启动则会抛出异常)
private?DataInputStream?dis;//?输入流(读取数据)
private?DataOutputStream?dos;//?输出流(发送数据)
//?private?String?serverIP;//?服务器IP地址
//?private?int?serverPort;//?服务器监听端口
private?String?sendData;//?发送的数据
public?TcpSocketClientDemo(String?serverIP,?int?serverPort)?throws?UnknownHostException,?IOException?{
//?this.serverIP?=?serverIP;
//?this.serverPort?=?serverPort;
socket?=?new?Socket(serverIP,?serverPort);
dis?=?new?DataInputStream(socket.getInputStream());
dos?=?new?DataOutputStream(socket.getOutputStream());
sendData?=?null;
startClient();
}
public?void?startClient()?{
try?{
//?第一步:创建客户端连接
System.out.println("===我的客户端界面===");
//?第二步:客户端向服务器发送数据
int?i?=?0;
Scanner?input?=?new?Scanner(System.in);
while?(i??5)?{
System.out.println("请输入你的内容(客户端的):");
sendData?=?input.nextLine();
if?(sendData.equals("quit"))?{
break;
}
dos.writeUTF(sendData);
sendData?=?dis.readUTF();
System.out.println("接收到服务器内容:"?+?sendData);
if?(i?==?5)?{
System.out.println("超过允许次数,请重新连接服务器.");
}
if?(sendData.equals("猜中了"))?{
i?=?5;
}
i++;
}
input.close();
}?catch?(Exception?e)?{
e.printStackTrace();
}?finally?{
//?第四步:关闭输入流、输出流和客户端连接
try?{
dis.close();
dos.close();
socket.close();
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
}
public?static?void?main(String[]?args)?{
try?{
new?TcpSocketClientDemo("127.0.0.1",?1000);
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}
java大学实用教程(习题讲解答案)
你到书店买吧 网上书店 有你要的书...
第1章 Java语言概述
1.1 Java语言的诞生
1.2 学习Java的必要性
1.3 Java的特点
1.4 Java与C/C++之关系
1.5 Java运行平台
1.6 Java程序开发
1.7 SDK 1.5编译器的新规定
问答题
作业题
第2章 基本数据类型和数组
2.1 标识符和关键字
2.2 基本数据类型
2.3 基本数据类型的转换
2.4 数据的输入与输出
2.5 数组
问答题
作业题
第3章 运算符、表达式与语句
3.1 算术运算符和算术表达式
3.2 关系运算符和关系表达式
3.3 逻辑运算符和逻辑表达式
3.4 赋值运算符和赋值表达式
3.5 移位运算符
3.6 位运算符
3.7 条件运算符
3.8 instanceof运算符
3.9 一般表达式
3.10 语句概述
3.11 分支语句
3.12 循环语句
3.13 跳转语句
问答题
作业题
第4章 类与对象
4.1 类声明和类体
4.2 类体的构成
4.3 构造方法与对象的创建
4.4 对象的引用与实体
4.5 成员变量
4.6 方法
4.7 方法重载
4.8 关键字this
4.9 包
4.10 import 语句
4.11 访问权限
4.12 基本类型数据的类包装
4.13 反编译和文档生成器
问答题
作业题
第5章 继承、接口与泛型
5.1 子类与父类
5.2 子类的继承性
5.3 子类对象的构造过程
5.4 成员变量隐藏和方法重写
5.5 关键字super
5.6 final类与final方法
5.7 对象的上转型对象
5.8 继承与多态
5.9 abstract类
5.10 接口
5.11 接口回调
5.12 内部类
5.13 匿名类
5.14 异常类
5.15 泛型类
问答题
作业题
第6章 字符串和正则表达式
6.1 String类
6.2 StringBuffer类
6.3 StringTokenizer类
6.4 正则表达式与模式匹配
6.5 元字符模式
6.6 限定符模式
6.7 模式的逻辑或
问答题
作业题
第7章 常用实用类
7.1 Date类
7.2 Calendar类
7.3 Math类与BigInteger类
7.4 LinkedListE泛型类
7.5 HashSetE泛型类
7.6 HashMapK,V泛型类
7.7 TreeSetE泛型类
7.8 TreeMapK,V泛型类
7.9 StackE泛型类
问答题
作业题
第8章 线程
8.1 Java中的线程
8.2 线程的生命周期
8.3 线程的优先级与调度管理
8.4 Thread的子类创建线程
8.5 Runable接口
8.6 线程的常用方法
8.7 线程同步
8.8 在同步方法中使用wait()、notify()和notifyAll()
8.9 线程联合
8.10 守护线程
问答题
作业题
第9章 输入/输出流
9.1 文件
9.2 文件字节流
9.3 文件字符流
9.4 从键盘读取数据
9.5 缓冲流
9.6 数组流
9.7 字符串流
9.8 数据流
9.9 管道流
9.10 对象流
9.11 序列化和对象克隆
9.12 随机读写流
9.13 文件锁
问答题
作业题
第10章 基于SWING的图形用户界面设计
10.1 AWT组件与SWING组件概述
10.2 JFrame窗体
10.3 菜单组件
10.4 布局设计
10.5 中间容器
10.6 文本组件
10.7 按钮与标签组件
10.8 复选框与单选按钮组件
10.9 列表组件
10.10 表格组件
10.11 树组件
10.12 进度条组件
10.13 组件常用方法
10.14 焦点事件
10.15 窗口事件
10.16 鼠标事件
10.17 键盘事件
10.18 多文档界面
10.19 AWT线程
10.20 对话框
10.21 打印组件
10.22 发布应用程序
问答题
作业题
第11章 Java中的网络编程
11.1 URL类
11.2 读取URL中的资源
11.3 显示URL资源中的html文件
11.4 处理超链接
11.5 InetAddress类
11.6 套接字Socket
11.7 使用多线程处理套接字连接
11.8 UDP数据报
11.9 广播数据报
问答题
作业题
第12章 Java Applet
12.1 Java Applet的运行原理
12.2 在Java Applet中播放声音
12.3 在网页向Java Applet传值
12.4 在Java Applet中使用AWT组件
12.5 在Java Applet中使用SWING组件
12.6 在Java Applet中绘制图形
12.7 在Java Applet中绘制图像
12.8 在Java Applet中播放幻灯片和动画
12.9 Java Applet的网络功能
问答题
作业题