20145129实验报告(五)
实验目的
- TCP方式进行网络通讯,实现服务器与客户端。
- 客户端与服务器连接,并实现数据交互。
实验内容
(一)实现服务器
- 本次试验,小组中我做服务器。
- 我将加密算法新建了一个类并和服务器的类打包在一起。
- 服务器实现
package Server;
import java.net.*;
import java.io.*;
public class ComputeTCPServer{
public static void main(String srgs[]) {
ServerSocket sc = null;
Socket socket=null;
try {
sc= new ServerSocket(4421);
System.out.println("已开启端口:" + sc.getLocalPort());
System.out.println("等待客户机连接...");
socket = sc.accept();
System.out.println("已连接到到客户机");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
String aline=in.readLine();
System.out.println("已加密数据:"+aline);
Dec_RSA decode=new Dec_RSA(aline);
aline=decode.decodestring;
System.out.println("接收到客户机消息:"+aline);
out.println("Echo:" + aline);
out.close();
in.close();
sc.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
package Server;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.math.BigInteger;
import java.security.interfaces.RSAPrivateKey;
public class Dec_RSA{
public String decodestring="";
public Dec_RSA(String ctext) throws Exception{
BigInteger c=new BigInteger(ctext);
FileInputStream f=new FileInputStream("Skey_RSA_priv.dat");
ObjectInputStream b=new ObjectInputStream(f);
RSAPrivateKey prk=(RSAPrivateKey)b.readObject( );
BigInteger d=prk.getPrivateExponent();
BigInteger n=prk.getModulus();
BigInteger m=c.modPow(d,n);
byte[] mt=m.toByteArray();
for(int i=0;i<mt.length;i++){
decodestring+=(char)(mt[i]);
}
}
}


(二)实现客户端
(三)建立连接并发送明文(有加密)
体会
- 1、不太理解为什么用logic后的IP4,不过在解决下面一个问题后好像有些明白了。
- 2、中途服务器与客户端连不上,用的手机热点,后来想起电脑可以手动创建局域网具体操作如下:
- 打开网络和共享中心->管理无线网络->添加->创建临时网络->填写网络名和安全密钥->下一步->创建成功







- 右键创建的网络查看属性,可以看到IP地址为IP4(上文图中可见)
PSP
步骤 |
耗时 |
百分比 |
需求分析 |
5分钟 |
6.25% |
设计 |
20分钟 |
25% |
代码实现 |
20分钟 |
25% |
测试 |
25分钟 |
31.25% |
分析总结 |
10分钟 |
12.5% |