下面是一段很简单的 C / S 模型的程序SSServer.java
/**************************
* TCP协议服务器端程序
*
**************************/
import java.net.*;
import java.io.*;
class SSServer {
public static void main(String[] args) throws Exception{
ServerSocket server = new ServerSocket(6000);
Socket serverSkt = server.accept();
InputStream is = serverSkt.getInputStream();
OutputStream os = serverSkt.getOutputStream();
os.write("HELLO".getBytes());
byte[] ib = new byte[100];
int len = is.read(ib,0,100);
System.out.println("he said: "+new String(ib,0,len));
os.write("Welcome you here !".getBytes());
byte[] ib2 = new byte[100];
len = is.read(ib2,0,100);
System.out.println("he said: "+new String(ib2,0,len));
byte[] ib3 = new byte[2000];
len = is.read(ib3,0,2000);
System.out.println(len);
System.out.println("he said: "+new String(ib3,0,len));
os.write("Bye !".getBytes());
}
}SSClient.java:
/**************************
TCP协议客户端程序
**************************/
import java.net.*;
import java.io.*;
class SSClient {
public static void main(String[] args) throws Exception{
Socket client = new Socket("127.0.0.1",6000);
InputStream ic = client.getInputStream();
OutputStream oc = client.getOutputStream();
byte[] bc = new byte[100];
int len = ic.read(bc,0,100);
System.out.println(new String(bc,0,len));
oc.write("Hello,this is zhansan!".getBytes());
len = ic.read(bc,0,100);
System.out.println(new String(bc,0,len));
oc.write("Thank you!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
len = ic.read(bc,0,100);
System.out.println(new String(bc,0,len));
}
}问题描述:
客户端向服务器写数据, 我将多个 oc.write()放一起,为什么从服务器端接受数据总是第一个oc.write()的数据,而接下来的几个oc.write却没有接受到呢,尽管服务器端接受数据最大值我设了很大也不行,就这点小疑问,请各位大大给出点意见. oc.write("Thank you!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
问题的焦点在上面这点代码里
服务器按受数据只是TTTTTTTTTTT!Bye!有,后面几个TTTTTTTTTTT!Bye!接受不到
/**************************
* TCP协议服务器端程序
*
**************************/
import java.net.*;
import java.io.*;
class SSServer {
public static void main(String[] args) throws Exception{
ServerSocket server = new ServerSocket(6000);
Socket serverSkt = server.accept();
InputStream is = serverSkt.getInputStream();
OutputStream os = serverSkt.getOutputStream();
os.write("HELLO".getBytes());
byte[] ib = new byte[100];
int len = is.read(ib,0,100);
System.out.println("he said: "+new String(ib,0,len));
os.write("Welcome you here !".getBytes());
byte[] ib2 = new byte[100];
len = is.read(ib2,0,100);
System.out.println("he said: "+new String(ib2,0,len));
byte[] ib3 = new byte[2000];
len = is.read(ib3,0,2000);
System.out.println(len);
System.out.println("he said: "+new String(ib3,0,len));
os.write("Bye !".getBytes());
}
}SSClient.java:
/**************************
TCP协议客户端程序
**************************/
import java.net.*;
import java.io.*;
class SSClient {
public static void main(String[] args) throws Exception{
Socket client = new Socket("127.0.0.1",6000);
InputStream ic = client.getInputStream();
OutputStream oc = client.getOutputStream();
byte[] bc = new byte[100];
int len = ic.read(bc,0,100);
System.out.println(new String(bc,0,len));
oc.write("Hello,this is zhansan!".getBytes());
len = ic.read(bc,0,100);
System.out.println(new String(bc,0,len));
oc.write("Thank you!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
len = ic.read(bc,0,100);
System.out.println(new String(bc,0,len));
}
}问题描述:
客户端向服务器写数据, 我将多个 oc.write()放一起,为什么从服务器端接受数据总是第一个oc.write()的数据,而接下来的几个oc.write却没有接受到呢,尽管服务器端接受数据最大值我设了很大也不行,就这点小疑问,请各位大大给出点意见. oc.write("Thank you!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
问题的焦点在上面这点代码里
服务器按受数据只是TTTTTTTTTTT!Bye!有,后面几个TTTTTTTTTTT!Bye!接受不到
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
oc.write("TTTTTTTTTTT!Bye!".getBytes());
改为 String a="TTTTTTTTTTT!Bye!";
String b="TTTTTTTTTTT!Bye!";
String c="TTTTTTTTTTT!Bye!";
String d="TTTTTTTTTTT!Bye!";String s=a+","+d+","c+","+d;
oc.write(s);
然后服务器接收s后 你再用 StringTokenizer类 为s构造一个分析器,然后再分别赋值给4个变量,让其传入数据库
就可以都送出去!
你取的时候client还没有写出去.所以你收不到.