这样的例子有很多的,自己找一些比较比较看看哪个好不就行了。
就socket而言(不论java还是c)我认为它的传输一般是不会有问题的,
主要看传输前和传输后的处理过程。建议以byte类型传输。
就socket而言(不论java还是c)我认为它的传输一般是不会有问题的,
主要看传输前和传输后的处理过程。建议以byte类型传输。
解决方案 »
- 请问大家 基本数据类型与对象的差别在哪?
- 请教个问题:我不太会用指针,能不能在工作中打死也不用指针
- 一个有关JDBC执行DB2存储过程的棘手问题,请高手帮忙!
- 请教applet问题!!!
- lomboz+jboss+eclipse配置j2ee项目 缺少必需的库:“jboss-boot.jar”这个库为什么找不到,在哪儿可下载到啊。
- [调查]大连的java软件公司,一般编什么样的软件?
- 为什么在多线程的程序中经常要写try{} catch(){}语句呢?
- 请问什么是实时系统?
- 菜鸟问题:何为数据成员?
- 菜菜鸟的问题。看些什么入门好书?
- 38分,请高手讲一下classpath和Packages的关系?
- 谁知道哪儿可以下载比较新的vaj?有多大?
rmi再好,还是不能代替SOCKET。
to pluto:
TCP是可靠传输,这个都知道,我试一下把数据转换成byte类型吧
成功离你已经不远了。
基于上述原理,我们编写了简单的客户机/服务器模式的网络通信程序。在服务器端,服务器监听客户机的请求,为每个客户机请求建立Socket连接,从而为客户机提供服务。而所提供的服务只是读取来自客户机的一行文本,并把它发回给客户机。以下是服务器端的通信程序。
import java.io.*;
import java.net.*;
class javaserver extends Thread {
ServerSocket server;
public javaserver() {
try {
server = new ServerSocket(600);
}
catch(IOException e) {
System.out.println("Cannot create Server");
System.exit(0);
}
System.out.println("Now socket server will Start");
this.start();
}
public void run() {
try {
while (true) {
Socket client = server.accept();
service ss = new service(client);
}
}
catch(IOException e) {
System.out.println("cannot provide service !");
System.exit(1);
}
}
public static void main(String args[]){
String data;
DataInputStream KeyInput;
new javaserver();
KeyInput = new DataInputStream(System.in);
try {
data = KeyInput.readLine();
}
catch (IOException e){
return;
}
if (data.equals("quit")) System.exit(1);
}
}class service extends Thread {
String data;
DataInputStream InputS;
PrintStream OutputS;
Socket Client;
public service(Socket ClientSocket) {
Client = ClientSocket;
try {
InputS = new DataInputStream
(Client.getInputStream());
OutputS = new PrintStream
(Client.getOutputStream());
}
catch (IOException e){
System.out.println("Cannot Connect with Client !");
return;
}
this.start();
}
public void run(){
try {
while (true){
data = InputS.readLine();
if (data == null) break;
else {
OutputS.println(data);
System.out.println("From Client: " + data);
}
}
}
catch (IOException e){
System.out.println("Read Data error");
}
try {
Client.close();
}
catch (IOException e){
System.out.println("Cannot close socket");
}
}
}在上面的程序中,我们使用了多线程机制。javaserver和service对象本身都是一个线程。javaserver对象首先创建一个ServerSocket对象,并启动线程的运行。它的run()方法用于监听来自客户机的连接。每当有一个新的客户机连接时,ServerSocket就会创建一个新的Socket类实例,并创建一个service对象,同时启动这个对象的线程。每个service对象用于完成与客户机通信、提供服务的任务。这样服务器可以同时与多个客户机连接,同时为多个客户机提供服务。当从标准输入中接收到quit字符串时,服务器退出运行。
在客户机端,首先创建一个Socket对象,用于与服务器通信。它从标准输入中读取数据,把这些数据传给服务器,再从服务器读取应答信息,然后把这些应答信息写到标准输出。当读取了5行的数据后,客户机程序将退出运行。以下是客户机端的通信程序。
import java.io.*;
import java.net.*;
class javaclient {
public static void main(String args[]){
String data;
Socket Client;
DataInputStream InputS;
DataInputStream KeyS;
PrintStream OutputS;
int i = 0;
try {
Client = new Socket("172.17.3.2",600);
InputS = new
DataInputStream(Client.getInputStream());
OutputS = new PrintStream
(Client.getOutputStream());
KeyS = new DataInputStream(System.in);
}
catch(IOException e){
System.out.println("Cannot Connect
with Server");
return;
}
try {
while (i<5){
data = KeyS.readLine();
OutputS.println(data);
System.out.println("ECHO From
Server:"+ InputS.readLine());
i++;
}
}
catch(IOException e) {
System.out.println("IOException
Happened");
}
try{
System.out.println("Now will
end this program");
Client.close();
}
catch(IOException e){
System.out.println("system cannot
close socket");
}
}
}