主要记录一下用socket传输不同的数据用到的各种API。方便日后查询。
1,传输数字
发送端:
Socket socket = new Socket("127.0.0.1", 9099);
OutputStream os = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeInt(22);
dos.flush();
接收端:
InputStream is = sck.getInputStream();
DataInputStream dis = new DataInputStream(is);
int number = dis.readInt();
System.out.println("number=" + number);
2,传输字符串
发送端:
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
String info="我叫王小二";
pw.write(info);
pw.flush();
接收端:
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=null;
while(!((info=br.readLine())==null)){
System.out.println("信息为:"+info);
}
3,传输键盘输入的内容
发送端:
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
out.writeUTF(str);
接收端:
DataInputStream input = new DataInputStream(socket.getInputStream());
String clientInputStr = input.readUTF();
System.out.println(clientInputStr);
4,传输图片
发送端
FileInputStream fis = new FileInputStream("client.bmp");
//获取输出流
OutputStream out = socket.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
//2.往输出流里面投放数据
while ((len = fis.read(buf)) != -1){
out.write(buf,0,len);
}
//通知服务端,数据发送完毕
socket.shutdownOutput();
发送端
InputStream in = socket.getInputStream();
//创建图片字节流
FileOutputStream fos = new FileOutputStream("server.bmp");
byte[] buf = new byte[1024];
int len = 0;
//往字节流里写图片数据
while ((len = in.read(buf)) != -1)
{
fos.write(buf,0,len);
}
5.传输数组
发送端:
Socket s = new Socket("localhost",9091);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(new String[]{"123","232"});
out.flush();
out.close();
接收端:
ObjectInputStream oi = new ObjectInputStream(s.getInputStream());
String [] arr = (String[]) oi.readObject();
System.out.println(arr[0] + arr[1]);
5.传输文件
6.传输视频
7.传输音频