@[toc]
使用基于TCP的网络编程方法,完成远程计算等差数列的前n项和功能。
(1)客户端将一等差数列的首项a1,公差d和项数n发送给服务器;
(2)服务器端接收到数据后对接收到的数据进行解析,将前n项和的计算结果发送给客户端;
(3)客户端收到后输出到控制台。
要求上传源代码和服务器端和客户端的程序运行结果截图。
========================================================= 服务端
package MoocPart11_01_01;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Demo class
*
* @author Laccoliths
*/
/**
* 服务端
*/
public class server {
public static void main(String[] args) throws IOException {
//1.创建服务器套接字,并指定端口号
ServerSocket listener=new ServerSocket(8888);
System.out.println("服务端已启动...");
//2 接受客户端连接,并返回客户端套接字
//返回的是客户端套字
Socket socket = listener.accept();
//3. 获取输入输出流
//4 处理
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line=br.readLine();
// 以,为分隔符分割字符串
String[] input = line.split(",");
int a1 = Integer.parseInt(input[0]);
int d = Integer.parseInt(input[1]);
int n = Integer.parseInt(input[2]);
double result = n*a1+n*(n-1)/d;
// System.out.println("首项为:"+a1+"公差为:"+d+"项数为:"+n+",的前n项和为:" +result);
//服务端回复客户端
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
bw.write("首项为:"+a1+",公差为:"+d+",项数为:"+n+",的前n项和为:" +result);
bw.newLine();
bw.flush();
// 5 关闭
bw.close();
br.close();
socket.close();
listener.close();
}
}
客户端
package MoocPart11_01_01;
import java.io.*;
import java.net.Socket;
/**
*
* @author Laccoliths
*/
/**
* 客户端
*/
public class TCPclient {
public static void main(String[] args) throws IOException {
//1.创建客户端套接字,并指定服务器地址和端口号
Socket socket=new Socket("127.0.0.1",8888);
//2.获取输入或者输出流
//客户端是向服务端发消息 输出
//3.处理
String str = "1,2,3";
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
bw.write(str);
bw.newLine();
bw.flush();
System.out.println("输入内容:"+str);
//接收服务端回复
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = br.readLine();
System.out.println(s);
//4.关闭
br.close();
bw.close();
socket.close();
}
}
使用基于TCP的网络编程方法,完成远程小写转换和校验功能。
(1)客户端键盘录入几个字符,发送到服务器端。
(2)服务器端将接收到的字符进行小写处理(即将所有字母转化为小写),并向客户端发出转换后的字符串作为响应。
(3)客户端对收到的字符串进行处理校验。如果校验成功,返回“处理成功”给服务器作为响应,并将其保存到character.txt文件中;否则返回“处理错误”给服务器作为响应。
要求上传源代码和服务器端和客户端程序运行结果截图。
========================================================= 服务端
package MoocPart10_01_02;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
*
* @author Laccoliths
* @date 2021/11/13
*/
/**
* 服务端
*/
public class server {
public static void main(String[] args) throws IOException {
//1.创建服务器套接字,并指定端口号
ServerSocket listener=new ServerSocket(8888);
System.out.println("服务端已启动...");
//2 接受客户端连接,并返回客户端套接字
//返回的是客户端套字
Socket socket = listener.accept();
//3. 获取输入输出流
//4 处理
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line=br.readLine();
String lower = line.toLowerCase();
System.out.println(lower);
//服务端回复客户端
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
if (checkString(lower)) {
bw.write("校验成功!");
toTxt(lower);
}else {
bw.write("校验错误!");
}
// bw.write(lower);
bw.newLine();
bw.flush();
// 5 关闭
bw.close();
br.close();
socket.close();
listener.close();
}
/**
* 检验是否是小写,全小写返回true,否则返回false
* @param str
*/
private static boolean checkString(String str) {
char ch;
boolean capitalFlag = false;
boolean lowerCaseFlag = false;
boolean numberFlag = false;
for(int i=0;i < str.length();i++) {
ch = str.charAt(i);
if( Character.isDigit(ch)) {
numberFlag = true;
}
else if (Character.isUpperCase(ch)) {
capitalFlag = true;
} else if (Character.isLowerCase(ch)) {
lowerCaseFlag = true;
}
if(numberFlag && capitalFlag && lowerCaseFlag) {
return false;
}
}
return true;
}
/**
* 将字符串写入D:/character.txt文件中
* @param str
* @throws IOException
*/
private static void toTxt(String str) throws IOException {
FileWriter fileWriter = new FileWriter("D:/character.txt");
fileWriter.write(str);
fileWriter.close();
}
}
客户端
package MoocPart10_01_02;
import java.io.*;
import java.net.Socket;
/**
* @author Laccoliths
* @date 2021/11/13
*/
/**
* 客户端
*/
public class TCPclient {
public static void main(String[] args) throws IOException {
//1.创建客户端套接字,并指定服务器地址和端口号
Socket socket=new Socket("127.0.0.1",8888);
//2.获取输入或者输出流
//客户端是向服务端发消息 输出
//3.处理
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
String str = "JavaProgramingTechnique";
bw.write(str);
System.out.println("输入内容:"+str);
bw.newLine();
bw.flush();
//接收服务端回复
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = br.readLine();
System.out.println(s);
//4.关闭
br.close();
bw.close();
socket.close();
}
}
标签:基于,socket,编程,TCP,String,bw,close,new,客户端
From: https://blog.51cto.com/Laccoliths/12068359