导航:首页 > 编程语言 > socket接收数据java

socket接收数据java

发布时间:2023-05-24 04:19:35

java socket 服务端接收数据阻塞。

服务器端处理的太慢了吧?

❷ Java socket接收缓存中多行数据数据的读取问题

先用输入流InputStream将文件内容读取到字节数组(长碰圆丛度为 1024)中笑樱,再用输出流OutputStream将字节数组中的数据写到目标设备
public void write(byte[] buffer, int offset, int count)
该方法第一个参数为:字节数组
第二个是:要写入的数据在数组中的起始位置腔燃 即:0
第三个是:写入的长度,即:1024

❸ java socket发送和接收多条数据的情况怎么解决

只要是接收端
你都应该不停的等待消息
,接受消息的那一段可以这样写
while(true)
{
try{
Thread.sleep(300);}catch(Excepion
e){}
//注意这里的inStream是DataInputStream
当然你也可以加以装饰
String
message=
inStream.readUTF();
if(message!=null)
{
System.out.println("收到消息:"+message);
}
}
只有这样才能不断从发送端收到消息,这段代码只是给你一敏扒个提示,有问题咐拿知衡消给我留言,通常为了程序的合理性
最好把这段代码写进一个线程里面,这样更合理

❹ java中socket不断接收数据问题

其实,方法有几个。
方法一:
定义一个MsgObject的消息类,里面存放的为发送的消息内容猜激(记得序列化)。然后再用ObjectOutputStream来把该类弄成一个输出流发送裤携出去。然后客户端就用
ObjectInputStream in=new ObjectInputStream(socket.getInputStream());
MsgObject obj=(MsgObject)in.getObject();就能够得到一个消息类对象了。。
不会的就追问下,我之前是这样做过的。

方法二:
如果你会json格式,那么就更加简单了,直接把你的消息放到json数组里面。。
这种方法没试过,我近期使用json过于频繁才突然记得的,如果你有兴趣用这个方法,可以一起讨论下。

方法三:
弄多个输入输出流,但胡兆伏是这个不建议

❺ java的serversocket怎么接受来自客户端的数据

通过accept()获取Socket,然后获取IO流,这个是我写的从客户端亮者下载文件的客户端代码,代码如下

ServerSocketserverSocket=newServerSocket(10002);
while(true){
Socketsocket=serverSocket.accept();
OutputStreamOutput=socket.getOutputStream();
FileInputStreaminput=newFileInputStream("F:\Play.mp4");

byte[]buf敬瞎薯=newbyte[1024];
intlength=0;
while((length神搜=input.read(buf))!=-1){
Output.write(buf,0,length);
}

Stringip=socket.getInetAddress().getHostAddress();
System.out.println(ip);

input.close();
socket.close();
}

❻ java socket技术 客户端实现不发送请求给服务端但是一直接收服务端发来的数据

说点泼冷水的话题
首先确认什么是客户端,什么是服务端。
从用户的角度,可见的、可操作的即是客户端,也就是你这里说的java开发的部分。而不可见的部分就是服务端,也就是你说的C部分。
而从网络开发的角度,发起请求的是客户端,而接收请求的是服务端。这与用户感受有很大区别。
当从java请求C的时候,java是客户端,C 是服务端。而当C主动请求时,则C就变成了客户端,而java 变成了服务端。
所以,从网络开发的角度,java想成为此次通信的服务端,必须长期维护一个端口可用,而C 要访问这个端口。
而java为了能够长期维护一个端口,一般采用socket 方式(其他方式也基本上都是基于socket的),由于java已经封装的很好了,只要new Socket(IP,port) 就可以 获得,同时,由于原来C 是服务器,而如果没有多个服务器同时向java端发送请求的话,基本连线程处理都不需要做的。

❼ java的socket通信如何直接接收16进制数据

发送消息之前转码为16进制
Java code
public static final String encodeHex(String msg) {
byte[] bytes = null;
try {
bytes = msg.getBytes("GBK");
} catch (java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}
StringBuffer buff = new StringBuffer(bytes.length * 4);
String b;
char a;
int n = 0;
int m = 0;
for (int i = 0; i < bytes.length; i++) {
b = Integer.toHexString(bytes[i]);
if (bytes[i] > 0) {
buff.append("00");
buff.append(b);
n = n + 1;
} else {
a = msg.charAt((i - n) / 2 + n);
m = a;
b = Integer.toHexString(m);
buff.append(b.substring(0, 4));
i = i + 1;
}
}
return buff.toString();
}

❽ 请教大家JAVA——socket接收的数据(byte[])的处理

接收方法的问题

如果你发送一个长度11的字符串 而用一个长度为8的数组接收
第一次read没问题 但第二次read时因为只接受了3个字符 而数组长度却是8.结果就是除了前3个字符外剩下全部都是0 就出现了你的问题。

byte[] b = {0x11,0x22,0x33, 0x00, 0x00, 0x00, 0x00...}; -->length = 1024 后面都是0x00
就是因为隐唯态只接受了前3个字符 后边数组实例的时候本身就是0
解决方法也比较容易
read(byte[] b)方法提供了一个返回的整数灶源用来山肢表示接受了多少个字符。
只要每次read时判断下看看返回的数值和数组长度大小。如果接收小于数组长度在处理处理数据时把多余的数据去掉。

❾ java socket发送多条、接收一条数据的情况怎么解决

具体原因不大清楚,模好陆我想可能是这样,你在每次进入循环都生成一个新的流对象,这个流对象在销毁回收的时候可能对socket的输出流产生了某种影响吧。

你可以这样来做袜纳啊
1. 使用StringBuilder,在循环里面将所有字符串合成一个字符串,最后旦顷退出的时候生成一个输出流输出。

2. 在进入循环体前面使用
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(socket
.getOutputStream()));

只产生一个流对象,在循环里面通过bw输出

❿ 用JAVA写一个SOCKET 接收TCP发来的消息

服务端监听:ServerSocket server=new ServerSocket(port);//port:绑定的端口号
Socket client=server.accept()();//监听端口,一旦取得连接则获得客户端的socket连接对象client

客户端: Socket s=new Socket(ip,port);//要连接的服务器的ip以及端口号

如果正常连接上之后,socket的对象可以获得InputStream和OutputStreame,然后就可以进行通信了

完成通信之后,执行socket对象的close()方法关闭连接,完成一次完整的socket连接

阅读全文

与socket接收数据java相关的资料

热点内容
抖音算法到底是什么 浏览:126
哪个vlan技术对报文加密 浏览:570
单片机定时电路 浏览:672
山西平台服务器云主机 浏览:700
按摩肚脐解压视频 浏览:989
php55安装教程 浏览:137
云服务器怎么查找本机域名 浏览:22
qd123y压缩机参数 浏览:385
程序员妈妈怀孕 浏览:490
金普国际编程 浏览:537
java什么是引用类型 浏览:944
这是命令吗txt 浏览:314
支付宝android包名 浏览:154
eclipsemaven命令 浏览:68
24路服务器配什么cpu 浏览:466
压缩文件和解压文件哪个快 浏览:675
亚马逊云服务器视频通话 浏览:912
金融知识app哪个好 浏览:978
农行理财app收益在哪里 浏览:969
暗淡的命令名项目表示该命令 浏览:212