java socket 多次反复通信

问题描述

java socket 多次反复通信

我用java socket实现简单的通讯功能,在做登陆的时候,客户端将用户名密码读取出来
发送给服务器(这是第一步),服务器读取信息后校验(这是第二步),校验后发送给客户端,客户端读取是否登陆成功的消息(这是第三步),但是,第一步第二步都没问题,但客户端无法将服务器再次发送的消息读取出来,下面是我的部分代码,我不知道怎么实现这种多次反复通信的问题,希望大家不吝赐教。
服务器代码:
output = new OutputStreamWriter(socket.getOutputStream());
input = new DataInputStream(socket.getInputStream());
byte [] b2=new byte[1024];
int len=input.read(b2);
String str = new String(b2,0,len); //读取用户名密码
System.out.println("客户端接收到的用户名密码:"+str);
//此处校验代码省略,假设用户名密码正确
output.write("reponse:1"); //发送给客户端登陆消息
System.out.println("服务器消息:登陆消息已发给客户端");

服务器控制台:
已启动监听,调用线程进入等待阶段……
服务器消息,客户端已响应
服务器消息:服务器已经建立与客户端的连接,客户端ip:/127.0.0.1
已启动监听,调用线程进入等待阶段……
客户端接收到的用户名密码:command:1;userName:username;passWord:password
服务器消息:登陆消息已发给客户端

客户端代码:
input = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
DataOutputStream output =
new DataOutputStream(socket.getOutputStream());
byte[] b = MainWindow.DATA.getBytes(); //将用户名密码转化为byte
output.write(b); //发送给服务器
System.out.println("用户名,密码信息已发送");
output.flush();
String str = input.readLine(); //读取服务器消息
System.out.println("客户端消息:已读取到登录信息");
if(str.equals("reponse:1")){
LoginDialogs.AUTH = true; //授予客户端登录权限
}
System.out.println(LoginDialogs.AUTH);
客户端控制台:
已连接
登陆按钮消息:已点击
用户名,密码信息已发送

解决方案

今天在做一个东东的时候,再次用到了socket,对于java来说,简单的网络通信,基本都会想到使用socket实现。那么接下来问题来了,挖掘机技术哪家强呢?(ps:开个玩笑哈)
在socket通信的时候,当传输数据的时候,可能使用String字符串类型,byte数组类型,等等。那么问题真的来了,使用String字符串怎传输呢?这个就是今天的话题,那么直接上代码喽:(注:主要要看红色标记的,绿......
答案就在这里:java中的Socket通信

时间: 2024-09-20 14:51:23

java socket 多次反复通信的相关文章

线程通信-Java socket通信 使用jconsole监控发现线程数不断增加

问题描述 Java socket通信 使用jconsole监控发现线程数不断增加 Java socket 使用线程通信,作为接收方每接收一个交易信息,使用jsonsole监控线程发现线程数量增加22个左右,经生产环境运行结果,当已启动线程总数达到2600多时 tomcat出现类似于假死的状况,不再接收任何交易信息.目前正在使用系统定时任务每天定时重启(每日交易量在70-80左右),求大手帮我分析下,现在附上图片和部分代码.jsonsole监控图:部分代码;public class SimpleS

Java Socket编程----通信是这样炼成的

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 一.网络基础知识(参考计算机网络) 关于计算机网络部分可以参考相关博客: TCP/IP协议栈及OSI参考模型详解> http://wangdy.blog.51cto.com/3845563/1588379 1.两台计算机间进行通讯需要以

局域网-java socket 的通信问题? 求解释?

问题描述 java socket 的通信问题? 求解释? 客户端和服务端分别在两个局域网内怎么通过java socket 通信? 解决方案 http://www.oschina.net/question/1251494_161695?sort=time&p=1 解决方案二: 通过中转,或者路由做映射 解决方案三: 我建议你还是webservice 好些,简单好用 解决方案四: 我觉得你这个问题不是怎么通过socket去通信而是你怎么让这两个机子的网络联通就好比你再客户端ping服务器如果能pin

java socket 通信 服务端接收的文件大于客户端发出的文件 是什么鬼

问题描述 java socket 通信 服务端接收的文件大于客户端发出的文件 是什么鬼 //服务端package Socket; import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;

java网络编程-java socket实现两台电脑通信

问题描述 java socket实现两台电脑通信 大学生 菜鸟一个 现在自己电脑创了 发送端,接收端,可行 然后同样的代码,将发送端目的ip改为宿舍一台电脑ip,就没反应了.怎么回事啊? 防火墙吗?还是ip地址不对.两台机一个网,一个是192.168.1.102,一台是103 解决方案 没反应是什么意思,指发送端? 解决方案二: 原因很多..硬件软件的可能性都有. 都会在中间阻止或者消亡http请求..最好把你的代码,和网络环境说一下. 解决方案三: 端口看看有没有被占用吧 解决方案四: 试试

java-急求Java socket编程实现两个客户端通信通过服务器转发不要图形界面不用连接数据库

问题描述 急求Java socket编程实现两个客户端通信通过服务器转发不要图形界面不用连接数据库 实现两个客户端通信通过服务器转发不要图形界面不用连接数据库 求源码 解决方案 通过服务器,也就是说各个客户端与服务器要正常通讯,这是最基本的要求.这个要求应该不难吧,网上有很多类似的代码,如Android Socket 编程(WIFI 和 ADB),这是我在 CSDN 博客中的一篇文章,希望对你有帮助. 然后呢,做协议,当服务器接收到数据满足一定的格式.或所有数据,都转发到另一端. 解决方案二:

自己写了一个用java socket通信实现的文件传输,如果我想实现不同局域网之间的传输怎么办?

问题描述 自己写了一个用java socket通信实现的文件传输,如果我想实现不同局域网之间的传输怎么办? 可不可以把自己的电脑搭建成服务器然后把文件传上去,自己电脑的服务器可以使用非web的文件么 解决方案 不同局域网之间通信要路由器交换机支持,进行路由转发.不然不能直接通信 解决方案二: 如果Socket通信的话IP地址必须相同

java socket通信,字节丢失问题

问题描述 java socket通信,字节丢失问题 请教高手一个问题: 我现在在多台win7和xp的主机上进行java的socket通信,主机间的源代码是通过svn同步,肯定完全一样,现在问题是(以下测试的socket通信文件完全一样):两台xp主机间通信完全没有问题,xp往win7发送也没有问题 问题出在:当win7往xp发送数据时,就会丢字节,在xp上最多接收8755个字节(接收缓冲区足够大),这样该如何解决,有没有哪位也碰到过同样的问题?麻烦指点下... 解决方案 是必现的吗......?

Java Socket通信(一)之客户端程序 发送和接收数据_java

网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据. 对于Socket通信简述,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容.Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容. 例1:客户端的简略写法(一). Socket clien