qq_慕丝8116306
getData()方法返回与数据报文相关联的字节数组。实际返回的是对与DatagramPacket最近关联的字节数组的一个引用,而关联则是通过构造函数或setData()方法形成。返回的缓存数组的长度可能比数据报文内部长度更长,因此,必须使用内部长度和偏移量来指定实际接收到的信息。
setData()方法指定一个字节数组作为该数据报文的数据部分。第一种形式将整个字节数组作为缓冲区;第二种形式把字节数组中,从offset到offset+length-1的部分作为缓存区。每次调用第二种形式的setData()方法,都将更新数据的内部偏移量和长度。
慕沐6598592
可以用image代替 ,2008还可以用varbinary(MAX)
Sql里可以存文件的类型,和My sql 或 oracle的blob类型没啥区别的
qq_Rain雨因_inVX07
是否加载了驱动?
慕粉1470873974
用 LongBlob
qq_Kiss魰囝_0
客户端也可以用多个线程实现
qq_沫希_0
老师分享了自己就懒得去敲代码了
街边七号
在MySQL中有四种Blob类型,他们的区别就是可以容纳的信息量不容分别是以下四种:
1.TinyBlob类型 最大能容纳255B的数据
2.Blob类型 最大能容纳65KB的
3.MediumBlob类型 最大能容纳16MB的数据
4.LongBlob类型 最大能容纳4GB的数据
很有可能是图片太大了,Blob容纳不了,可以换成MediumBlob类型,亲测有效。
慕娘7213080
去控制台切换一下就好了
机智的意竹竹
已经解决了,自己太粗心,上传文件和接受数据里都创建了socket对象,删掉一个就好了
邻家小灰
我用了三天的时间
帅意
...说一下我的思路。一个服务端,两个客户端A,B。 A给服务端传输给B的信息和B的IP。 服务端将信息通过A的ip传给A。B给A的回复同样A的信息和A的IP传给服务端。。。
慕粉6049285
一个人 在这自编自导自演
进击的猿
//服务器端
package Main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8899);
Socket socket = server.accept();
System.out.println("链接成功。");
Speak speak = new Speak(socket);
speak.start();
Listen listen = new Listen(socket);
listen.start();
}
}
class Speak extends Thread {
Socket socket = null;
PrintWriter speak = null;
String Data = null;
Scanner hand = new Scanner(System.in);
public Speak(Socket socket) throws IOException {
this.socket = socket;
this.speak = new PrintWriter(socket.getOutputStream(), true);
}
public void run(){
while(true){
Data = hand.next();
speak.println(Data);
}
}
}
class Listen extends Thread {
Socket socket = null;
BufferedReader reader = null;
public Listen(Socket socket) throws IOException{
this.socket = socket;
this.reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
public void run(){
while(true){
try {
System.out.println(reader.readLine());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//客户端
package Main;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
Socket socket = new Socket("127.0.0.1", 8899);
System.out.println("链接成功。。");
Speak speak = new Speak(socket);
speak.start();
Listen listen = new Listen(socket);
listen.start();
}
}
慕粉2136542887
可能是缺mysql-connector-java-5.1.7-bin.jar包
阿非利加
当数据库字段为blob类型时,必须使用PreparedStatement中的setBinaryStream(int,InputStream,int)方法;当数据库字段为longblob类型时,必须使用PreparedStatement中的setBinaryStream(int,InputStream,long)方法。
_Everglow

----------------------------------------------------------------------------------------

客户端同样方式修改。。。
进击的猿
你问问题的下面
景州
private void closeAll() {
try {
if(socket != null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void sendData(CommandTransfer transfer) {
try {
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(transfer);
} catch (IOException e) {
e.printStackTrace();
}
}
private CommandTransfer getData() {
CommandTransfer transfer = null;
try {
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
transfer = (CommandTransfer) ois.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return transfer;
}我这边可以运行
qq_昼绽_0
先启动服务器,再启动客户端。
雨漪绮
Java可以使用jedis来操作redis
qq_星空_14
Edward_Xie
输入没反应,是不是提前关闭了io流呢,就和老师讲的,while死循环后再关闭socket。
夜还没黑
数据库中存储上传文件内容的类型应为为blob
苏莫离
个人看法:传参数据大小超过缓存区大小,会直接报异常
lxlacie
表示客户端和服务器之间传输的指令和数据,其中包括当前操作的命令、所有发送的数据对象、是否操作成功和返回的结果四个属性
红袖侍读
实现分析里不是展示的有一个文件实体类File么, 用它来封装文件信息的,你传递多个文件就可以
使用 Map<File> datamap 接收后取出来就可以
红袖侍读
既然图片能写入,为什么文字不行,按理说用的一个流如果没有格式限制就没有问题,这我也看不出什么问题。不过给你几个建议,你可以调试一下看看传文本的时候哪里阻塞了导致数据过不去,还有catch块不要抛出太多,可以用父类代替,最重要的一点。。。为什么没注释,还好代码不长也不难,要是复杂点真想回答的看一眼也觉得烦。。。
慕粉Coder
首先你应该把你的错误提示也贴出来,其次你在服务端并没有关闭流。
Atheny
blob
漠南孤者
如何实现多客户端之间的通信?经过服务器。
答:服务器端同时持有两个socket,这两个socket分别表示和两个客户端的连接。从一个socket的输入流读取数据,写到另一个socket的输出流中,这样就能实现多客户端之间的通信吧。
如何实现并行通信?
答:从socket中可以获取输入流和输出流对象,如果使用两个线程,分别持有输入流和输出流,那么便可以实现你所谓的“并行通信”。