
[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();
}
}
注释是用来给开发者或者是软件后续的维护者来看的。一般是用来描述这一段代码或者是程序做了些什么样的事情。实现了哪些功能,java里面注释代码,可以分为行注释和块注释,方法注释等。
行注释就是在需要注释的代码前加 //
块注释则是用 / 和 / 把文本段落框起来即可
class Point {
private double x; //类的属性
private double y;
Point(double x1, double y1) { //构造方法,给属性赋值。new Point(10,20),所以x=10,y=20
x = x1;
y = y1;
}
public double getX() { return x; } //返回属性的值
public double getY() { return y; }
public void setX(double i) { x = i; } //给属性赋值
public void setY(double i) { y = i; }
}
class Circle {
private Point o;
private double radius;
Circle(Point p, double r) {//构造方法,就是在main方法中new的时候要执行的方法,会给o和radius赋值。
o = p;
radius = r;
}
Circle(double r) {//构造方法
o = new Point(00, 00);
radius = r;
}
boolean contains(Point p) {
double x = pgetX() - ogetX();
double y = pgetY() - ogetY();
if(xx + yy > radius radius) return false;
else return true;
}
public void setO(double x, double y) {
osetX(x);
osetY(y);
}
public Point getO() { return o; }
public double getRadius() { return radius;}
public void setRadius(double r) { radius = r;}
public double area() {
return 314 radius radius;
}
public double per(){
return 3142radius;
}
}
public class aaa {
public static void main(String args[]) {
Circle c1 = new Circle(new Point(10,20), 90); //首先new Point(10,20),会调用Point类的构造方法。得到一个Point对象,这个对象的属性x=10 y=20
//然后看外面,调用Circle类的第一个构造方法。所以radius=90
Systemoutprintln("c1 area = "+c1area());//这样执行Circle的area()方法时,返回3149090的结果
Systemoutprintln("c1 area = "+c1per());//同样,返回314290的结果
}
}
不明白再问吧
public class myException extends Exception { //自定义的类继承JAVA的异常类
private static final long serialVersionUID = 1L; //序列化
public myException() { //构造方法 无参数
super("我定义的异常"); } //调用父类的构造方法
public static void main(String args[]) {//main方法 程序的入口
try { //try catch 语句块
new Exer6_6()mymethod1();//实例化 Exer6_6 调用它的mymethod1 方法
} catch (Exception e) {
Systemoutprintln(egetMessage()); //控制台打印异常信息
eprintStackTrace(); //异常信息
Systemoutprintln("myException" + egetClass()getName()); //得到具体的异常类名
}
}
}
class Exer6_6 { //自定义的类
public void mymethod1() throws myException {//一个普通方法抛出异常
mymethod2(); //调用这个方法mymethod2
}
public void mymethod2() throws myException { //一个普通方法抛出异常
throw new myException();//抛出一个自定义的异常信息类的实例
}
}
/ Book类/
public class Book
{
String bookName; / 书名变量 /
String authorName; / 作者名变量 /
int nopages;
boolean available;
Book(String book, String author, int pages, boolean status) / 构造函数 /
{
bookName = book; / 给类内的bookName赋初值,接受传入的参数 /
authorName = author; / 给类内的authorName赋初值,接受传入的参数 /
nopages = pages; / 给类内的nopages赋初值,接受传入的参数 /
available = status; / 给类内的available赋初值,接受传入的参数 /
}
boolean isAvailable() / 判断是否有这本书的函数 ,根据类内的available变量来判断/
{
if(available)
{
Systemoutprintln("有这本书");
return false;
}
else
{
Systemoutprintln("没有这本书");
return false;
}
}
/ 主函数,由这个作为入口开始整个程序/
public static void main(String[] args)
{
Book objBook = new Book("CoreJava", "Albert", 45, true); / 声明并实例化一个Book对象,因为它的构造函数要求要四个参数,所以传入四个/
/ 其中"CoreJava"对应构造函数中的String book, "Albert"对应String author, 45就是int pages也就是45页,true就对应是否可用的参数boolean status/
User objUser = new User(); / 声明并实例化一个User对象/
objUsergetBookStatus(objBook); / 调用User的getBookStatus方法来判断objBook这本书是否可用/
}
}
/ User类/
class User
{
/ 根据传入的Book对象判断这个Book对象是否可用/
void getBookStatus(Book objBook)
{
objBookisAvailable();
}
}
以上就是关于java程序求注释全部的内容,包括:java程序求注释、为什么要为程序添加注释,在java程序中如何为程序添加注释、对一个程序代码加上注释详细一点关于java的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)