请问在JAVA中是通过什么方式实现SOCKET编程的?我看了个例子,上面这样写的:
out = new PrintWriter(socket.getOutputStream(),true);
out.println(str);
JAVA中SOCKET编程发送数据的实现方法后面的STRING类型,难道我只能把组合好的BYTE[]转成STRING发送出去吗?这样对吗?
out = new PrintWriter(socket.getOutputStream(),true);
out.println(str);
JAVA中SOCKET编程发送数据的实现方法后面的STRING类型,难道我只能把组合好的BYTE[]转成STRING发送出去吗?这样对吗?
(初学JAVA,还是等高手来确定下)
看一下OutputStream的API,直接 .write()方法就行了!
import java.io.*;
import java.net.*;
public class MyServer{
public static void main(String[] args)
throws IOException{
ServerSocket s=new ServerSocket(8658);
System.out.println("开始:"+s);
try{
Socket socket=s.accept();
try{
System.out.println("连接接受"+socket);
BufferedReader in=new BufferedReader(new InputStreamReader
(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),true);
while(true){
String str=in.readLine();
if(str.equals("q")) break;
System.out.println("对方说:"+str);
BufferedReader is=new BufferedReader(new InputStreamReader(System.in));
String input=new String();
input=is.readLine().trim();
out.println(input);
System.out.print("我说:");
out.flush();
}
}
finally{
System.out.println("关闭....");
socket.close();
}
}
finally{
s.close();
}
}
}/*一个作为Client*/
import java.io.*;
import java.net.*;
public class MyClient{
public static void main(String[] args)
throws IOException{
InetAddress addr=InetAddress.getByName("127.0.0.1");
System.out.println("地址="+addr);
Socket socket=new Socket(addr,8658);
try{
System.out.println("socket="+socket);
BufferedReader is=new BufferedReader(new InputStreamReader(System.in));
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
for(;;){
System.out.print("我说:");
String input=new String();
input=is.readLine().trim();
out.println(input);
if(input.equals("q")) break;
BufferedReader in=new BufferedReader(new InputStreamReader
(socket.getInputStream()));
String str=in.readLine();
System.out.println("对方说:"+str);
out.flush();
} }
finally{
System.out.println("关闭");
socket.close();
}
}
}
在这个基础上,你可以包装任意的输出流类,来实现你需要的功能,
传送字节数组,
DataOutputStream类
write(byte[] b, int off, int len)
将指定字节数组中从偏移量 off 开始的 len 个字节写入基础输出流。