导航:首页 > 编程语言 > javasocket多个对象

javasocket多个对象

发布时间:2025-07-26 09:32:46

A. 求java中用socket通信的多线程服务端,要求客户端可以长时间连接及发送信息并且无需每次都要创建新对象

创建一个新线程时将这个线程对象的引用赋给一个变量:

MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();

在你的线程类中应该提供一个方法,用于关闭这个线程所创建的socket连接。例如你的MyThread类中应该提供一个关闭socket的方法:
public void closeSocket()
{
//这里关闭当前对象的socket
}

这样,如果你想关闭thread1中的连接(该连接使用8888端口),则只要调用这个方法:

thread1.closeSocket();

B. java中的socket是什么意思

所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
重要的Socket API:
java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。
. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。
. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。
注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
2ServerSocket类例子编辑

package com.lanber.socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
/**
* 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,
* 而后才可以向客户端发送信息,否则将会有运行时出错。
* @param args
*/
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(8888);
//服务器接收到客户端的数据后,创建与此客户端对话的Socket
Socket socket = ss.accept();
//用于向客户端发送数据的输出流
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//用于接收客户端发来的数据的输入流
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());
//服务器向客户端发送连接成功确认信息
dos.writeUTF("接受连接请求,连接成功!");
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

3客户端的例子编辑
package com.lanber.socket;
importjava.io.DataInputStream;
import java.io.DataOutputStream;
importjava.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo {
/**
* @param args
*/
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket("localhost",8888);
//获取输出流,用于客户端向服务器端发送数据
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//获取输入流,用于接收服务器端发送来的数据
DataInputStream dis = new DataInputStream(socket.getInputStream());
//客户端向服务器端发送数据
dos.writeUTF("我是客户端,请求连接!");
//打印出从服务器端接收到的数据
System.out.println(dis.readUTF());
//不需要继续使用此连接时,记得关闭哦
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

C. 浅谈Java中如何利用socket进行网络编程(一)

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。在java中,有专门的socket类来处理用户的请求和响应。利用SOCKET类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在JAVA中如何利用socket进行网络编程。 在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。 程序可以对这些数据流根据需要进行进一步的封装。本文的例子就对这些数据流进行了一定的封装(关于封装可以参考Java中流的实现部分)。 一、建立服务器类 Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。ServerSocket server = new ServerSocket(9998) 这条语句创建了一个服务器对象,这个服务器使用9998号端口。当一个客户端程序建立一个Socket连接,所连接的端口号为9998时,服务器对象server便响应这个连接,并且server.accept()方法会创建一个Socket对象。服务器端便可以利用这个Socket对象与客户进行通讯。Socket incoming = server.accept() 进而得到输入流和输出流,并进行封装BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream())); PrintWriter out = new PrintWriter(incoming.getOutputStream(),true); 随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。从而可以根据程序的需要对客户端的不同请求进行回应。

D. java中的socket编程是作什么的

Socket,又称为套接字,是计算机网络通信的基本技术之一。如今,大多数基于网络的软件,如浏览器、即时通讯工具甚至是P2P下载,都是基于Socket实现的。本文将介绍基于TCP/IP的Socket编程,并展示如何编写客户端和服务器程序。

在接下来的示例中,我们将使用基于TCP/IP协议的Socket编程,因为这个协议在实际应用中比UDP/IP更为广泛。所有与Socket相关的类都位于java.net包下,因此在进行Socket编程时需要引入这个包。

接下来是写入数据的过程。客户端的Socket对象可以得到一个OutputStream对象,然后可以通过这个对象写入数据,类似于文件输入输出的处理代码

打开服务器端的Socket也很简单。通过Socket对象,可以获取一个InputStream对象,然后像处理文件输入输出一样读取数据。这里我们将读取的数据打印出来。

使用Socket实现一个回声服务器的功能,就是服务器会将客户端发送过来的数据传回给客户端。具体实现时,服务器端会监听特定的端口,当有客户端连接时,服务器会接收客户端发送的数据,并将这些数据原样返回给客户端。

客户端则需要知道服务器的IP地址和端口号,然后通过Socket对象建立与服务器的连接。客户端发送数据后,会等待服务器的响应,服务器接收到数据后,会将数据返回给客户端。客户端接收到返回的数据后,就可以处理这些数据了。

Socket编程是构建网络应用的重要基础,通过上述示例,我们可以看到Socket的使用并不复杂。只要掌握了基本的Socket编程方法,就可以开发出各种基于网络的应用程序。

E. 什么是java socket

java技巧经验
http://www.mywelt.net/?q=jts

61 条面向对象设计的经验原则
ANT 基本概念、安装与配置
AWT 和 SWING 的强大竞争者 - SWT 简介
Axis + Tomcat 模拟银行存取款服务
用 Java 编写简单 UDP 网络通信程序
用 JBuilder9 开发 Struts 的实例
用 JFace 和 SWT 构建一个简单的应用程序
用 Jsp 动态输出 excel 文档和乱码问题的解决
用 JSP/Servlet 构建三层式管理信息系统
用 SyncML 进行异构数据库复制
用缓冲技术提高 JSP 应用的性能和稳定性
用连接池提高 Servlet 访问数据库的效率
程序开发中 Debug 和 Release 之本质区别
简单教您如何使用 Factory Method 模式
简易使用 Apache Web 让你的 JSP "动"起来
Enhydra 入门 - 一个有用的中间件 - Enhydra
通过 Java Swing 看透 MVC 设计模式
通过 JDBC 连接 Oracle 数据库的十大技巧
配置 Web 应用环境实现 JSP 留言簿开发
讲解如何在 C/C++ 中调用 Java 的方法
讲述在 Java 中 Decorate 的三种实现方法
详细解析 JavaBeans 与 Ejb 的区别
详细讲解怎样在 Java 中运行其它应用程序
详细讲述 JSP、PHP 与 Java 融合的开发环境
详细为您解析 JSP 的环境引擎 - Websphere
详细介绍用 JBuilder9 开发的 Struts 实例
详解 EJB 3.0 是如何简化应用程序的开发
详解如何利用 iText 在 JSP 中生成 PDF 报表
详解怎样使用 Axis 开发 Web Service 的实例
Jar 文件包间接及 Jar 命令开发实例详解
Java 的秘密 - 将应用程序的设定存在哪里
Java 程序的反编译 - 再次掀起编译热潮
Java 编程中更新 XML 文档的常用方法集
Java 语言入门级的十二大特色详细介绍
Java 入门基本语法
Java 入门所需的关键特性与 30 个基本概念
Java 关于中文乱码问题的解决方案与经验
Java 列表对象的性能分析和测试应用解析
Java 初学者常用开发工具介绍图解
Java 基础之"接口"与"包"
Java 对象转为 String 的几种常用方法剖析
Java 开发中的线程安全选择与 Swing
Java 开发为什么需要 UML?
Java 性能优化技巧集锦
Java 服务器端编程安全的必读本
Java 中 Static、this、super、final 用法
Java 中的强大武器 - 对象的序列化
JavaBeans 程序开发从入门到精通教程
Javamail 操作指南 - 实例代码解析
Jboss 的 JDBC 数据源配置步骤详解大全
JNI 使用技巧点滴
JSP 与 ASP 的比较
JudoScript - 让 Java 离你更近一些
Spring WebFlow - 重用与抽象框架解析 (1)
Spring WebFlow - 重用与抽象框架解析 (2)
StarSuite 6.0 和 SDK 安装以及配置指南 (1)
StarSuite 6.0 和 SDK 安装以及配置指南 (2)
String.getBytes() 方法中的中文编码问题
Swing 第三方工具的设计
Tomcat5.0 + MySql 配置 JDBC,DBCP,SSL
Web Services 在 Tomcat4.0.4 的安装和测试
初学者入门 JAVA 的 XML 编程实例解析
初学者如何快速入门 JSP 实例分析
在 Java 应用开发中如何使用线程
在 Servlet 中如何捕获 Session 事件
大话面向对象的前世与今生
如何进行 J2SDK 和 TOMCAT 的安装及配置
如何在Web应用中启动后台任务的实例讲解
如何为 Java 应用程序添加退出事件的处理
如何使用 Java 程序实现 Logo 画面的编程
实例讲解如何穿越防火墙访问 EJBs
开发中利用批处理 JDBC 语句提高处理速度
怎样用 Java 实现 MSN Messager 的功能
怎样用 jConfig 获取 XML 文件中的配置信息
怎样真正的在 Struts 框架下使用时间类型
怎样在 Java 实例开发的过程中使用进度条
怎样为 SWT 应用程序配备内容助理功能
怎样使用 Java Servlet 动态生成图片详解
手把手教您如何编写一个动画 Applet 实例
揭开 Java Socket 编程中的一个秘密类
教您用 Java 做一个最简单的 Socket 通话程序
教您纯 Jsp 的自定义的单个文件上载代码
教您在 Java 开发过程中如何应对异常处理
教您如何提高 Java 代码性能的应用解析
教您将 Java 编译为 EXE 的几种简易方法
教您快速上手使用 JDOM 处理 XML 文档的技巧
教您怎样在 Web 应用中动态创建 PDF 文件
教您一个压缩归档的实用软件
教你如何快速成为一名 Java 初级程序员
浅谈实际开发中数据源在 JDBC 中的应用
浅析 Java 中常见的 Date 类的应用技巧
浅析 JavaBean 与 EJB 的区别与应用分析
测试对 Java 开发的重要性
深入解析 Java 的新特性 assertion
专家解答 Java 常见问题集锦 25 问
从 C++ 到 Java - 理解面向对象的关键所在
使用 Java 把文件/目录压缩成 ZIP 包最新技巧
澄清 Java 的接口与继承机制

http://www.mywelt.net/?q=jts

F. java socket如何实现一次传送多个文件

很简单,复就是把多制个文件“变成”一个文件传送就可以了,每个文件都是一个流,把这些流输入到一个流中合并流传输即可,这个是基本思路。实现差不多以下两个方法
1、直接流拼接,循环要传输的文件列表,多个InputStream,然后输出到一个OutputStream,这个out就是发送数据的端口,为了接收端能够识别每个文件从而分割流,需要每个流中结尾添加分隔符。其实这就是HTTP文件上传的做法。
2、就比较简单了,职业使用ZIP工具包吧需要传输的多文件压缩成一个文件传输,接收端直接解压缩就完事。
需要注意的是,发送多文件上传你需要提取计算好总传输量字节大小放在传输报文头部告诉接收端你要发送的数据有多大,不然接收端可能无法完整接收数据。

G. 求教编程做出一个两人多人之间简单的聊天程序

制作人: CK.y ,汇成建筑企业管理Q:610089144
仅供参考,大家要学会自己制作,很有成就感的啊!! 用 Java 作后台,开发一个 C / S 架构的多人聊天程序。首先,设计用户界面。

一、界面设计

界面的元件全部使用 Flash CS3 自带的组件:
首先,放入 TextInput 组件(实例名 input_txt),作为用户输入;
再放入 Button 组件(实例名 submit_btn),用于提交输入的信息;
最后放入 TextArea 组件(实例名 output_txt),显示聊天信息。

二、组件参数初始化
由于客户端代码不是很多,我们这次就写在动作帧上:
// ************ 组件参数初始化 ************
submit_btn.label = "发送消息";
output_txt.editable = false;

// 设置各组件中字体的大小
input_txt.setStyle("textFormat", new TextFormat(null, 15));
output_txt.setStyle("textFormat", new TextFormat(null, 15));
submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));

// 当按下回车或点击 submit_btn 按钮后调用事件处理函数
submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

// 事件处理函数
function onKeyDown(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.ENTER) {
sendMessage(null);
}
}

function sendMessage(evt:Event):void {
// 测试:将 input_txt 的内容输出到 output_txt 中
output_txt.appendText(input_txt.text + "\n");

// 清空 input_txt,并设置焦点到 input_txt
input_txt.text = "";
stage.focus = input_txt;
}

三、编写客户端 Socket
1. 首先,Socket 连接非常简单:
var socket:Socket = new Socket();
socket.connect("127.0.0.1", 8888);
其中 connect() 方法中的两个参数分别为是主机名和端口号(端口号尽量用 1024 以上)。好了,这样就连接上了。接下来是读写的问题。

2. 向服务器端写入字符串:我们在 sendMessage() 方法中进行写入操作,注意写出的字串必需以回车(\n)结束:
function sendMessage(evt:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(input_txt.text + "\n");
socket.writeBytes(bytes);
socket.flush();

// 清空 input_txt,并设置焦点到 input_txt
input_txt.text = "";
stage.focus = input_txt;
}

3. 读取服务器端写回的字符串:最后将服务器发回的字符串输出到 output_txt 文本域中:
// 当客户端 socket 收到数据后会调用 readMessage() 函数
socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage);

function readMessage(evt:ProgressEvent):void {
output_txt.appendText(socket.readUTF() + "\n");
}

四、Flash 客户端全部脚本
// ************ 组件参数初始化 ************
submit_btn.label = "发送消息";
output_txt.editable = false;

input_txt.setStyle("textFormat", new TextFormat(null, 15));
output_txt.setStyle("textFormat", new TextFormat(null, 15));
submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));

submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

function onKeyDown(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.ENTER) {
sendMessage(null);
}
}

function sendMessage(evt:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(input_txt.text + "\n");
socket.writeBytes(bytes);
socket.flush();

input_txt.text = "";
stage.focus = input_txt;
}

// ************ 客户端 Socket ************
var socket:Socket = new Socket();
socket.connect("127.0.0.1", 8888);
socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage);

function readMessage(evt:ProgressEvent):void {
output_txt.appendText(socket.readUTF() + "\n");
}

五、编写 Java 服务器端 Socket
最后,我们需要编写 Java 后台服务器端的代码。
首先,创建一个 ServerSocket 作为Socket 服务器。当有客户端连接后通过 accept() 方法即可得到客户端的 Socket:

ServerSocket socketServer = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接");

// accept() 方法是阻塞式的,当有客户端连接成功后才继续执行
Socket socket = socketServer.accept();
System.out.println("客户端连接成功");

然后得到与客户端的输入流和输出流(输入流是客户端连接到服务器的管道,输出流则是服务器到客户端的管道):
// 获得输入流和输出流,输入流为 BufferedReader 类型,输出流为 DataOutputStream 类型
BufferedReader reader =
new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
DataOutputStream writer = new DataOutputStream(socket.getOutputStream());

拿到输入输出流以后,就可以通过输入流(InputStream)读取 Flash 客户端发来的字符串,通过输出流(OutputStream)向 Flash 客户端写字符串:
while (true) {
// readLine() 方法也是阻塞式的,当客户端有消息发来就读取,否则就一直等待
String msg = reader.readLine();

// 当客户端发送的字符串为 null 时,说明客户端已经关闭,此时退出循环
if (msg == null) {
System.out.println("客户端已离开");
break;
}

// 将读入的信息加工后再写回客户端
writer.writeUTF("写回客户端的" + msg);
}

以上是ServerSocket 与 AS 3 Socket 通信的基本原理。在实际应用中,会有多个客户端连接这个ServerSocket,因此要创建一个多线程的 Socket 服务器。
下面简述一下多线程 Socket 服务器原理:当socketServer.accept() 之后就需要实例化一个线程对象,在该对象中持有socketServer.accept() 返回的 Socket 对象,然后让线程跑起来执行读写操作。如果再来一个客户端就再跑一个线程,同样执行读写操作。同时,用一个 List 容器来管理这些对象。
最终服务器端的代码如下:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class FlashScoket {
private List<Client> clientList = new ArrayList<Client>();

public static void main(String[] args) {
new FlashScoket().runSocket();
}

private void runSocket() {
try {
ServerSocket socketServer = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接");

while (true) {
// accept() 方法是阻塞式的,当有客户端连接成功后才继续执行
Socket socket = socketServer.accept();
System.out.println("客户端连接成功");

// 实例化一个 Client 对象,并启动该线程
Client client = new Client(socket);
clientList.add(client);
client.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}

class Client extends Thread {
private Socket socket;

private BufferedReader reader;
private DataOutputStream writer;

private Client(Socket socket) {
this.socket = socket;
try {
// 获得输入流和输出流,输入流为 BufferedReader 类型,输出流为 DataOutputStream 类型
reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
writer = new DataOutputStream(socket.getOutputStream());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void run() {
try {
while (true) {
// readLine() 方法也是阻塞式的,当客户端有消息发来就读取,否则就一直等待
String msg = reader.readLine();

// 当客户端发送的字符串为 null 时,说明客户端已经关闭,此时退出循环
if (msg == null) {
clientList.remove(this);
System.out.println("客户端已离开");
break;
}

// 将读入的内容写给每个客户端
for (Iterator<Client> it = clientList.iterator(); it.hasNext();) {
Client client = it.next();
client.getWriter().writeUTF(msg);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭 socket 及相关资源
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

public DataOutputStream getWriter() {
return writer;
}
}
}

六、补充技术
1. 如何测试?
* 首先要编译FlashScoket —— javac FlashScoket
* 然后启动FlashScoket —— java FlashScoket
* 最后将 Flash 发布为 exe 文件格式,同时开启多个即可。

2. 自动跟踪到最后一行:当收到新的消息时自动滚动到最后一行,在 readMessage() 方法中加入:
output_txt.verticalScrollBar.scrollPosition = output_txt.verticalScrollBar.maxScrollPosition;

3. 当出现输入/输出错误并导致发送或加载操作失败时提示用户,加入对IO_ERROR 的侦听:
socket.addEventListener(IOErrorEvent.IO_ERROR, socketIOError);
function socketIOError(evt:IOErrorEvent):void {
output_txt.appendText("服务器端尚未开启,请稍后再试\n");
}

4. 在sendMessage() 中加入对空字符串的验证,如果为空则 return:
if (input_txt.text == "") {
return;
}

5. 在消息前面显示用户名:大家可以制作一个登录页面,输入用户名,假设已将输入的用户名存放在 userName 变量中,在写入时加进去:
var userName:String = "FL 车在臣";
在 sendMessage() 中相应改为:
bytes.writeUTFBytes(userName + " : " + input_txt.text + "\n");

6. 使用output_txt .htmlText 输出文字,那么相应的写入格式可以调整为:
bytes.writeUTFBytes("<font color='#0000FF'>" + userName + " : </font>" + input_txt.text + "\n");

H. java socket 多个客户端连接, 怎分辨是那一位客户端

使用IP区分

你可以这样:ServletSocket.accept();获取到的Socket对象
使用Map存起来,IP做Key
Map(Ip,Socket);

这样就可以了

阅读全文

与javasocket多个对象相关的资料

热点内容
qq设计 浏览:891
红头文件顶格间距多少 浏览:696
怎么抓防火墙上的数据包 浏览:686
加工编程岗位有哪些 浏览:961
excel的查找一列中的数据库 浏览:711
女生适合做什么编程 浏览:936
w10电脑自动删除文件 浏览:26
用手机怎样打印文件 浏览:374
国务院app上留言有什么后果 浏览:159
订餐用什么app 浏览:588
手机数据线哪里有售 浏览:926
中专生学少儿编程是什么 浏览:197
divcss通栏代码 浏览:875
win10设置局域网共享文件夹 浏览:875
如何显示被隐藏的密码错误 浏览:674
win10蓝牙先点接收文件 浏览:971
数据库具有较高的数据独立性 浏览:720
ug圆弧面和斜面怎么编程 浏览:739
公司取名网站哪个好 浏览:639
美国干编程有什么条件 浏览:303

友情链接