import java.net.*
import java.io.*
public class ClientSocketDemo
{
//声明客户端Socket对象socket
Socket socket = null
//声明客户器端数据输入输出流
DataInputStream in
DataOutputStream out
//声明字符串数组对象response,用于存储从服务器接收到的信息
String response[]
//执行过程中,没有参数时的构造方法,本地服务器在本地,取默认端口10745
public ClientSocketDemo()
{
try
{
//创建客户端socket,服务器地址取本地,端口号为10745
socket = new Socket("localhost",10745)
//创建客户端数据输入输出流,用于对服务器端发送或接收数据
in = new DataInputStream(socket.getInputStream())
out = new DataOutputStream(socket.getOutputStream())
//获取客户端地址及端口号
String ip = String.valueOf(socket.getLocalAddress())
String port = String.valueOf(socket.getLocalPort())
//向服务器发送数据
out.writeUTF("Hello Server.This connection is from client.")
out.writeUTF(ip)
out.writeUTF(port)
//从服务器接收数据
response = new String[3]
for (int i = 0i <response.lengthi++)
{
response[i] = in.readUTF()
System.out.println(response[i])
}
}
catch(UnknownHostException e){e.printStackTrace()}
catch(IOException e){e.printStackTrace()}
}
//执行过程中,有一个参数时的构造方法,参数指定服务器地址,取默认端口10745
public ClientSocketDemo(String hostname)
{
try
{
//创建客户端socket,hostname参数指定服务器地址,端口号为10745
socket = new Socket(hostname,10745)
in = new DataInputStream(socket.getInputStream())
out = new DataOutputStream(socket.getOutputStream())
String ip = String.valueOf(socket.getLocalAddress())
String port = String.valueOf(socket.getLocalPort())
out.writeUTF("Hello Server.This connection is from client.")
out.writeUTF(ip)
out.writeUTF(port)
response = new String[3]
for (int i = 0i <response.lengthi++)
{
response[i] = in.readUTF()
System.out.println(response[i])
}
}
catch(UnknownHostException e){e.printStackTrace()}
catch(IOException e){e.printStackTrace()}
}
//执行过程中,有两个个参数时的构造方法,第一个参数hostname指定服务器地址
//第一个参数serverPort指定服务器端口号
public ClientSocketDemo(String hostname,String serverPort)
{
try
{
socket = new Socket(hostname,Integer.parseInt(serverPort))
in = new DataInputStream(socket.getInputStream())
out = new DataOutputStream(socket.getOutputStream())
String ip = String.valueOf(socket.getLocalAddress())
String port = String.valueOf(socket.getLocalPort())
out.writeUTF("Hello Server.This connection is from client.")
out.writeUTF(ip)
out.writeUTF(port)
response = new String[3]
for (int i = 0i <response.lengthi++)
{
response[i] = in.readUTF()
System.out.println(response[i])
}
}
catch(UnknownHostException e){e.printStackTrace()}
catch(IOException e){e.printStackTrace()}
}
public static void main(String[] args)
{
String comd[] = args
if(comd.length == 0)
{
System.out.println("Use localhost(127.0.0.1) and default port")
ClientSocketDemo demo = new ClientSocketDemo()
}
else if(comd.length == 1)
{
System.out.println("Use default port")
ClientSocketDemo demo = new ClientSocketDemo(args[0])
}
else if(comd.length == 2)
{
System.out.println("Hostname and port are named by user")
ClientSocketDemo demo = new ClientSocketDemo(args[0],args[1])
}
else System.out.println("ERROR")
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
【ServerSocketDemo.java 服务器端Java源代码】
import java.net.*
import java.io.*
public class ServerSocketDemo
{
//声明ServerSocket类对象
ServerSocket serverSocket
//声明并初始化服务器端监听端口号常量
public static final int PORT = 10745
//声明服务器端数据输入输出流
DataInputStream in
DataOutputStream out
//声明InetAddress类对象ip,用于获取服务器地址及端口号等信息
InetAddress ip = null
//声明字符串数组对象request,用于存储从客户端发送来的信息
String request[]
public ServerSocketDemo()
{
request = new String[3]//初始化字符串数组
try
{
//获取本地服务器地址信息
ip = InetAddress.getLocalHost()
//以PORT为服务端口号,创建serverSocket对象以监听该端口上的连接
serverSocket = new ServerSocket(PORT)
//创建Socket类的对象socket,用于保存连接到服务器的客户端socket对象
Socket socket = serverSocket.accept()
System.out.println("This is server:"+String.valueOf(ip)+PORT)
//创建服务器端数据输入输出流,用于对客户端接收或发送数据
in = new DataInputStream(socket.getInputStream())
out = new DataOutputStream(socket.getOutputStream())
//接收客户端发送来的数据信息,并显示
request[0] = in.readUTF()
request[1] = in.readUTF()
request[2] = in.readUTF()
System.out.println("Received messages form client is:")
System.out.println(request[0])
System.out.println(request[1])
System.out.println(request[2])
//向客户端发送数据
out.writeUTF("Hello client!")
out.writeUTF("Your ip is:"+request[1])
out.writeUTF("Your port is:"+request[2])
}
catch(IOException e){e.printStackTrace()}
}
public static void main(String[] args)
{
ServerSocketDemo demo = new ServerSocketDemo()
}
}
import java.util.ArrayListimport java.util.List
import java.util.Scanner
public class GradeStatistic {
public static void main(String[] args) {
GradeStatistic gs = new GradeStatistic()
List<Mark>list = new ArrayList<Mark>()
float sum = 0
while(true){
Scanner sc = new Scanner(System.in)
System.out.print("Please input student name: ")
String name = sc.nextLine()
if(name.equals("end")){
break
}
System.out.print("Please input student score: ")
float score = sc.nextFloat()
sum += score
list.add(gs.new Mark(name, score))
}
float max = list.get(0).getScore()
float min = list.get(0).getScore()
for(Mark mark: list){
if(max <mark.getScore()){
max = mark.getScore()
}
if(min >mark.getScore()){
min = mark.getScore()
}
}
float average = sum / list.size()
System.out.println("Average is: " + average)
System.out.println("Max is: " + max)
System.out.println("Min is: " + min)
}
private class Mark{
private String name
private float score
public Mark(String name, float score){
this.name = name
this.score = score
}
public String getName() {
return name
}
public float getScore() {
return score
}
}
}
----------------------
Please input student name: Zhang san
Please input student score: 100
Please input student name: Li Si
Please input student score: 91
Please input student name: Ec
Please input student score: 35
Please input student name: ma qi
Please input student score: 67
Please input student name: end
Average is: 73.25
Max is: 100.0
Min is: 35.0
只需要把本地写的代码原封不动的搬上去就可以,因为不清楚你具体是什么程序所以也无法告诉你迁移方法。至于你提到的监视服务器和客户端通信情况其实那也是有很多办法监视的,例如使用linux下的curl可以知道http状态是什么样的,使用wireshark可以抓取http数据包来知道服务器和客户端之间交流是怎样的一种方式。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)