
[1] MainThread类为服务端程序,运行过程中会生成SubThread线程去与客户端程序通讯
[2] Client类为客户端程序,让用户输入数据与服务端程序进行通讯
[3] 具体解释如下
[4] 已测试通过,笑纳^
import javaioIOException;
import javanetServerSocket;
import javanetSocket;
/
[1]创建7777端口,循环等待客户端连接<br>
[2]如果有客户端连接,生成一个socket对象,并生成一个子线程去处理接数据通讯<br>
/
public class MainThread {
public MainThread() {
try {
ServerSocket ss = new ServerSocket(7777);// 以创建7777端口
Systemoutprintln("服务器启动");
while (true) {
Socket socket = ssaccept();// 等待数据,如果没有数据会一直等待
new SubThread(socket)start();// 新建一个线程,将socket为参数传递过去,并启动此新线程
}
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
/
服务端程序入口
/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建MainThread类,实际上是调用MainThread类的构造函数
new MainThread();
}
}
import javaio;
import javanetServerSocket;
import javanetSocket;
/
[1]由服务端主线程创建,用于与客户端数据通讯<br>
[2]如果客户端发来的数据是以byebye开头的数据,则结束线程,否则将所收到的数据直接发送会给客户端<br>
/
public class SubThread extends Thread {
byte[] buffer = new byte[256];// 数据缓冲区
private InputStream is;// 输入流
private OutputStream os;// 输出流
Socket socket;// socket套接字
public SubThread(Socket s) {
// 由MainThread类调用此函数
thissocket = s;// 接收socket参数
}
public void run() {
try {
is = socketgetInputStream();// 从socket中取得输入流
os = socketgetOutputStream();// 从socket中取得输出流
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
while (true) {
try {
int i = isread(buffer);// 读取缓冲区的数据
String str = new String(buffer, 0, i);// 复制所读到的数据,保存为一个String
Systemoutprintln("recieved:" + str);
if (strstartsWith("byebye"))
break;// 如果接收到的数据以"byebye"开头,就退出while循环,也就是退出线程
oswrite(strgetBytes());// 如果是其他字符开头,则将数据直接回复给对方
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
}
import javaio;
import javanetServerSocket;
import javanetSocket;
/
[1]连接服务端程序,也就是localhost的7777端口 <br>
[2]接收用户输入数据,并发送给服务端 <br>
[3]等待服务端返回数据<br>
[4]输出服务端返回的数据<br>
@author lenovo
/
public class Client {
public Client() {
byte[] buffer = new byte[256];
try {
Socket socket = new Socket("localhost", 7777);// 连接localhost主机(就是本台电脑)的7777端口,生成socket对象
InputStream is = socketgetInputStream();// 从socket中取得输入流
OutputStream os = socketgetOutputStream();// 从socket中取得输出流
while (true) {
Systemoutprintln("输入:");// 提示用户输入数据
int i = Systeminread(buffer);// 接收用户输入的数据
String str = new String(buffer, 0, i);// 复制用户输入的数据保存为一个String
oswrite(strgetBytes());// 交数据发送到本机的7777端口
i = isread(buffer);// 等待对方的返回
str = new String(buffer, 0, i);// 复制对方返回的数据保存为String
Systemoutprintln("recieved:" + str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
/
客户端程序入口
@param args
/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 新建Client类,实际是调用Client类的构造函数
new Client();
}
}
1、单行(single-line)--短注释://……
单独行注释:在代码中单起一行注释,
注释前最好有一行空行,并与其后的代码具有一样的缩进层级。如果单行无法完成,则应采用块注释。
注释格式:/
注释内容
/
行头注释:在代码行的开头进行注释。主要为了使该行代码失去意义。
注释格式://
注释内容
行尾注释:尾端(trailing)--极短的注释,在代码行的行尾进行注释。一般与代码行后空8(至少4)个格,所有注释必须对齐。
注释格式:代码
+
8(至少4)个空格
+
//
注释内容
2、块(block)--块注释:/……/
注释若干行,通常用于提供文件、方法、数据结构等的意义与用途的说明,或者算法的描述。一般位于一个文件或者一个方法的前面,起到引导的作用,也可以根据需要放在合适的位置。这种域注释不会出现在html报告中。注释格式通常写成:
/
注释内容
/
3、文档注释:/……/
注释若干行,并写入javadoc文档。每个文档注释都会被置于注释定界符
//
以上就是关于java程序求注释全部的内容,包括:java程序求注释、关于JAVA程序的注释和运行结果、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)