一、关于IP端口的问题

1、问题:对于IP和端口仅仅有个概念,实践时不知道从哪获取。

解决方法:询问同学后知道了,IP地址可以通过命令行:ipconfig查看,端口号是自己设定的。(20145105姜丽)

2、问题:java.net.SocketException: Connection refused: connect。

解决方法:该异常发生在客户端进行 new Socket(ip, port)操作时,该异常发生的原因是或者具有ip地址的机器不能找到(也就是说从当前机器不存在到指定ip路由),或者是该ip存在,但找不到指定的端口进行监听。出现该问题,首先检查客户端的ip和port是否写错了,如果正确则从客户端ping一下服务器看是否能ping通,如果能ping通(服务服务器端把ping禁掉则需要另外的办法),则看在服务器端的监听指定端口的程序是否启动,这个肯定能解决这个问题。(20145212罗天晨)

3、问题:一开始运行SimpleSocketClient.java程序时弹出错误:

解决方法:端口号被占用了,改了一个端口号就好了。(20145215卢肖明)

4、问题:利用InetAddress类取得的IP地址是自己的IP地址吗?和在命令行中得到的IP地址不同。

(20145304刘钦令)

5、问题:在运行SimpleSocketClient的时候,发现运行出现错误了。

解决方法:上网找了一下发现原来是端口8080被占用了,更换了端口号10000以后就成功了,修改端口为10000后的运行结果:
(20145320周歧浩)

6、问题:运行服务器时出现如下提示:

最佳解决方法,来自20145314郑凯杰(博客链接地址:http://www.cnblogs.com/5314zkj/p/5472319.html):这是端口被占用了,换一个端口后就正常了。关于换端口的问题,在实验里已经写的很清楚了,有三种解决办法。

①可以用老师上传给我们的XAMPP软件,查看已被使用的端口十分方便。

②可以在命令行中输入netstat -na就能看到当前的端口号的占用情况。

③连接私人WIFI,即手机热点,成功率暴涨。

7、问题:实验中的问题:


解决方法:如果有其他的Java项目(程序)在运行中,则JVM会被占用,便会出现该错误,要解决该问题直接结束正在运行的程序即可。因此在运行你想要调试的项目前,要确保JVM是处于Stop状态的。(20145203盖泽双)

8、问题:实验的时候找不到自己的ip地址。

解决方法:百度错误代码后发现是自己没有设置Path(20145324王嘉澜)

9、问题:关于IP地址和域的关系,并不太懂之间的联系,是IP包含域?还是域包含IP地址?

解决方法:这块的知识在计算机网络上就存在些许的问题。我觉得这篇文章将IP地址和域比喻成手机号码和手机通讯录名单,一个人可以有很多个手机号码,可是一个手机号码只能有一个人对应。同理,一个域名可以对应许多个IP地址,但是一个IP地址只能有一个IP地址。(20145335郝昊)

10、问题:java.net.BindException:Address already in use: JVM_Bind。

解决方法:该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。(20145212罗天晨)

11、问题:如何得到本机的IP地址

解决方法:①这是我运行InetAddressDemo的结果

②不止使用这个可以得到本机的IP地址,在cmd命令行中输入ipconfig,也可以得到


大家可以看到我的电脑的IP地址为10.43.39.110(20145320周歧浩)

二、客户端与服务端链接时的问题

2、问题:在连接时客户端一方总是提示连接超时。

解决方法:在对比ipcongfig命令查看到的所有连接情况后,我们发现写错了IP地址,即连接的是WI-FI,但写的是本地连接的IP,修改后可以连接。(20145105姜丽)

3、问题:如何复用Socket连接?

```

package tcp;import java.io.*;import java.net.*;
/**
复用连接的echo服务器
功能:将客户端发送的内容反馈给客户端
*/public class MulSocketServer {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;OutputStream os = null;InputStream is = null;//监听端口号int port = 10000;try {//建立连接serverSocket = new ServerSocket(port);System.out.println("服务器已启动:");//获得连接socket = serverSocket.accept();//初始化流is = socket.getInputStream();os = socket.getOutputStream();byte[] b = new byte[1024];for(int i = 0;i < 3;i++){int n = is.read(b);//输出System.out.println("客户端发送内容为:" + new String(b,0,n));//向客户端发送反馈内容os.write(b, 0, n);}} catch (Exception e) {e.printStackTrace();}finally{try{//关闭流和连接os.close();is.close();socket.close();serverSocket.close();}catch(Exception e){}}}

}
```(20145203盖泽双)

6、问题:如何复用Socket连接?

解决方法:实现建立一次连接,进行多次数据交换呢。其实很简单,建立连接以后,将数据交换的逻辑写到一个循环中就可以了。这样只要循环不结束则连接就不会被关 闭。按照这种思路,可以改造一下上面的代码,让该程序可以在建立连接一次以后,发送三次数据,当然这里的次数也可以是多次。运行示例截图:


(20145216史婧瑶)

3、 问题:如何使服务器端支持多个客户端同时工作?

解决方法:改善服务端示例程序将由两个部分组成,MulThreadSocketServer类实现服务器端控制,实现接收客户端连接,然后开启专门的逻辑线程处理该连接,LogicThread类实现对于一个客户端连接的逻辑处理,将处理的逻辑放置在该类的run方法中。(20145203盖泽双)

4、问题:java.net.SocketException: (Connection reset或者Connect reset by peer:Socket write error)。

解决方法:该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。(20145212罗天晨)

5、问题:3.java.net.SocketException: Socket is closed,

解决方法:该异常在客户端和服务器均可能发生。异常的原因是己方主动关闭了连接后(调用了Socket的close方法)再对网络连接进行读写操作。

6、问题:如何使服务器端支持多个客户端同时工作?

实例:MulThreadSocketServer类实现服务器端控制,实现接收客户端连接,然后开启专门的逻辑线程处理该连接,LogicThread类实现对于一个客户端连接的逻辑处理,将处理的逻辑放置在该类的run方法中。

主要使用两个类:

①DatagramSocket:实现“网络连接”,包括客户端网络连接和服务器端网络连接。虽然UDP方式的网络通讯不需要建立专用的网络连接,但是毕竟还是需要发送和接收数据,DatagramSocket实现的就是发送数据时的发射器,以及接收数据时的监听器的角色。类比于TCP中的网络连接,该类既可以用于实现客户端连接,也可以用于实现服务器端连接。

②DatagramPacket:实现对于网络中传输的数据封装。在UDP方式的网络编程中,无论是需要发送的数据还是需要接收的数据,都必须被处理成DatagramPacket类型的对象,该对象中包含发送到的地址、发送到的端口号以及发送的内容等。其实DatagramPacket类的作用类似于现实中的信件,在信件中包含信件发送到的地址以及接收人,还有发送的内容等,邮局只需要按照地址传递即可。在接收数据时,接收到的数据也必须被处理成DatagramPacket类型的对象,在该对象中包含发送方的地址、端口号等信息,也包含数据的内容。和TCP方式的网络传输相比,IO编程在UDP方式的网络编程中变得不是必须的内容,结构也要比TCP方式的网络编程简单一些。

三、关于找不到文件的问题

1、问题:调用RSA加密代码文件时,总是提示找不到指定文件。

解决方法:将调用方法中的文件名改为文件路径,强制读取该文件。(20145105姜丽)

2、问题:在代码的运行中,,由于没有加入RSA的相关文件,导致程序出现了一些问题。

解决方法:向里面加入了一个RSA的文件,在与src的同级目录下生成了两个文件:

程序运行成功了!(20145107李长达)

四、关于包的问题

1、问题:用到的包之前在学习时大多没有遇到过,所以比较陌生,不知道每个包代表什么含义。

解决方法:后来通过查资料,了解了每个包的作用,在使用的过程中思路才逐渐清晰起来.(20145118常悦)

2、问题:

解决方法:因为我电脑中没有这个类的包,可以把包名删掉,或者加一个包。
(20145203盖泽双)

五、基础性概念问题

1、问题:什么是网络协议?

解决过程:
通过学习老师博客中给出的资料链接,总结出以下解释:

①网络协议是指对于网络中传输的数据格式的规定。

②在网络编程中,对于同一个网络程序来说,一般都会涉及到两个网络协议格式:客户端发送数据格式和服务器端反馈数据格式,在实际设计时,需要一一对应。

③由于各种网络程序使用不同的协议格式,所以不同网络程序的客户端之间无法通用。而对于常见协议的格式,例如HTTP(Hyper Text Transfer Protocol,超文本传输协议)、FTP(File Transfer Protocol,文件传输协议)、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)等等,都有通用的规定。

④最后,对于一种网络程序来说,网络协议格式是该程序最核心的技术秘密,因为一旦协议格式泄漏,则任何一个人都可以根据该格式进行客户心端的编写,这样将影响服务器端的实现,也容易出现一些其它的影响。(20145216史婧瑶)

2、问题:UDP编程与TCP编程的区别及优缺点

解决方法:udp协议于tcp协议最本质的区别是:udp不基于连接,tcp基于连接;简单的说就是通信双方是否在自己的机器上保持对方身份的记录,tcp保持,udp不保持。
udp适合传输数据内容不太敏感,丢失、误传影响不大的工作,例如局域网聊天、设备发现;tcp范围就太广了,凡是应用规模大点、网络环境恶劣点的应用都需要,例如ftp、网管、下载软件等。
另外在网络环境相同的情况下,使用默认的tcp和udp协议时,网络好udp的效率高一些,而网络不好tcp的稳定性高一些。(20145329吉东云)

3、问题:同样的什么是域?

解决方法:之前只是很简单的讲了域和IP地址的关系,但是域的具体定义却没有给出。百度后"域"的真正含义指的是服务器控制网络上的计算机能否加入的计算机组合。(20145335郝昊)

4、问题:是关于协议的问题,协议存在的具体作用是什么?

解决过程:学习过后对于这个问题有了了解,协议的真正作用是一种格式,对于不同的电脑,不同的程序有不同的数据格式,而对于这种数据格式的规定就是协议。(20145335郝昊)

六、其他问题

1、

我尝试创建了一个20M的文件example_memory_mapped_file.txt,并且用字符A对它进行填充,然后读取前30个字节。在实际的应用中,内存映射不仅仅擅长提高I/O的原始速度,同时它也允许多个不同的reader和writer同时处理同一个文件镜像。(20145211黄志远)

2、

原来我以为要两台机才能做C/S结构程序,后来突发奇想试了一下,然后发现一台机也可以


(20145120黄玄曦)

转载于:https://www.cnblogs.com/GZSdeboke/p/5496623.html

总结同学们第十周作业出现的问题相关推荐

  1. 2019春第十周作业

    第十周作业 本周作业头 这个作业属于哪个教程 C语言程序设计Ⅱ 这个作业要求在哪里 (https://edu.cnblogs.com/campus/zswxy/software-engineering ...

  2. 20189200余超 2018-2019-2 移动平台应用开发实践第十周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第十周作业 偏好 在Android应用中,我们常需要记录用户设置的一些偏好参数,,此时我们就需要用SharedPreferences和 ...

  3. 2018-2019-2 20189206 《网络攻防实践》 第十周作业

    2018-2019-2 20189206 <网络攻防实践> 第十周作业 First Draft of a Report on the EDVAC EDVAC (Electronic Dis ...

  4. 20189216 《网络攻防技术》第十周作业

    一.冯·诺依曼体系结构和图灵机的理解及其两者之间的区别和联系 1.冯·诺依曼体系结构 定义:美籍匈牙利数学家冯·诺依曼于1946年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同 ...

  5. mooc数据结构与算法python版第十周作业_中国大学mooc慕课_数据结构与算法Python版_章节答案...

    新入对于接诊人的院病与查房,中国章节在多必须经治间内进行医师长时. 大学答案高的主要文库日常利用率较有(. 须注下问题:慕课意以,者以知识作为的投资产权出资.在配置上电装,该装装在置(线应部位)的接地 ...

  6. 20155335 俞昆 第十周作业

    Linux内存共享有多种,如mmap().Posix共享内存.System V 共享内存. 1>mmp()通过映射一个普通文件实现共享内存,具有文件实体,shmget()对应文件在内存中,无文件 ...

  7. 2017-2018-2 20179306 《网络攻防技术》第十周作业

    缓冲区溢出漏洞实验 一.实验简介       缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于 ...

  8. 算法设计课第十周作业

    问题描述 思路 采用"自底向上"的动态规划:我们从最下面一行的节点开始,这些节点的最小路径和就是节点本身的值.由此,第k行第i个节点的最小路径和将是其两个子节点的路径和中较小的一个 ...

  9. python123第五周作业答案_python第五十四天--第十周作业

    SELECT版FTP: 使用SELECT或SELECTORS模块实现并发简单版FTP 允许多用户并发上传下载文件 必须使用select or selectors模块支持多并发,禁止使用多线程或多进程 ...

最新文章

  1. 对标以太坊的EOS再火,也拼不过InterValue的区块链4.0
  2. python基础实例-Python入门基础知识实例,
  3. sonarqube下载地址
  4. 计组-输入输出系统小结
  5. Mac下gradle简介与安装
  6. wpf datagrid 数据为null时 显示背景图_[C#.NET 拾遗补漏]09:数据标注与数据校验
  7. 朴素贝叶斯 半朴素贝叶斯_SQL Server中的朴素贝叶斯预测
  8. CFileDialog用法详解
  9. 4.4.4 无锁的对象引用:AtomicReference和AtomicStampedReference
  10. IDM磁力解析 IDM磁力使用教程
  11. 第六章 jQuery选择器
  12. python泊松分布_Python数据可视化:泊松分布详解
  13. QT连接MySQL数据库问题
  14. CSP 201609-3 炉石传说
  15. linux mysql 命令行查询 乱码_mysql命令提示行连接乱码的解决
  16. stm32通过ESP8266连接互联网服务器,手机通过网页实现远程控制灯亮灭
  17. Echarts-实现3D柱状图显示,并单个柱子变色
  18. 非华为电脑如何与matepad pro进行多屏协同,以及如何处理连接失败等问题
  19. 轮廓图编程-自定义QChartView
  20. 电子通信类相关专业面试

热门文章

  1. java温度传感器用法_Android中使用SerialPort读取红外温度传感器数据
  2. ELF文件格式概要介绍
  3. maven实战--读书笔记之第一章和第二章
  4. 如何选择适合你的兴趣爱好(三十一),围棋
  5. 模仿58到家百度地图地址选择效果
  6. qrcode length overflow (16321056)--qrcode.js使用过程中二维码长度溢出解决办法
  7. python图片转pdf文件_用python 制作图片转pdf工具
  8. python爬取豌豆荚中的详细信息并存储到SQL Server中
  9. 【好用的工具】Hue 图形化操作数仓工具
  10. 学计算机打字练习的软件,一种计算机学习用快速打字练习装置的制作方法