现在有一个端口,有一个IP,还有一些报文的格式介绍。现在想问几个问题,请各位大牛给指点下:我是客户端,我要是通过这个IP和端口和服务器端联系,是不是要使用Socket通信呢?还有没有别的方法呢?
你们可以给我提供一些Socket通信的源码吗?最好有注释的!连接也可以!现在对Socket是一点都不知道呀!
要怎么通信的呢?还有使用Socket如何向服务器端发送信息呢?我现在的信息就是报文形式的!报文要如何处理使用起来会方便点呢?给服务端发送信息后,他给我返回的也是报文的形式,要如何解析呢?socket通信源代码注释
你们可以给我提供一些Socket通信的源码吗?最好有注释的!连接也可以!现在对Socket是一点都不知道呀!
要怎么通信的呢?还有使用Socket如何向服务器端发送信息呢?我现在的信息就是报文形式的!报文要如何处理使用起来会方便点呢?给服务端发送信息后,他给我返回的也是报文的形式,要如何解析呢?socket通信源代码注释
解决方案 »
- strust2中的if标签问题
- org.springframework.beans.factory.BeanCreationException
- jstl遍历问题
- 如何复制struct2迭代标签里的属性值到剪贴板呢?
- 用el表达式怎么写?
- tomcat 5.5问题
- STRUTS的ACTION中的LIST。GET(0)里面的内容是“<html></html>”,有什么办法可以以HTML代码的效果显示到JSP页上
- struts 标签 struts-form.tld
- 做一个即时通信软件,像雅虎通,新浪聊聊吧!用什么开发比较好?
- 急!!在同一個程序中運用兩個EJB session bean可以嗎?
- Spring security获取在线的用户
- PDF格式为CMYK时转为图片颜色问题
我在使用Socket通信的时候向服务器端传送的信息就是这个报文是吗?虽然感觉是,但是总感觉不太确定!可以给我一个肯定的答案吗?
我是这样理解的,不知道对不对:
就是报文就相当于一个字符串。就好像我写一个方法要传一个参数,这个参数就是这个报文。至于报文的处理就是对这个字符串的处理了。是吗?谢谢帮助!
嗯,估计一个良好的服务系统,不会直接让你socket发请求啥的~
标志位是字符,继续以字符方式处理;
标志位是字节,就用字节方式处理,会用到byte相关的。
现在要用到Socket的长连接,我在服务端要实现这个长连接呢?还有就是我如何使用俩个线程呢,一个是读取服务端返回的数据,一个是向服务端发送数据!方便的话,可以加下您的QQ吗?
现在要用到Socket的长连接,我在服务端要实现这个长连接呢?还有就是我如何使用俩个线程呢,一个是读取服务端返回的数据,一个是向服务端发送数据!方便的话,可以加下您的QQ吗?
我们用的是SOAP协议,不过任何服务器,都应该接收响应后,会有一个返回消息的,这里不需要启动两个线程,同一个线程发送消息,再处理返回的响应就可以了吧。
QQ不怎么上的(白天也上不了),在你的CSDN空间给你留言了。
那么你需要一个发送程序,而接受计算机需要一个接收程序。
对于发送端来说,你需要知道对面的IP和端口即可进行发送,对于接收端来说,你只需要接收就OK了。至于报文什么的。
不管是什么,直接用一个字符串或者字节数组打包发过去即可。(字节流)至于如何解析,那是接受者的工作了,不属于网络传输的事情。
现在要用到Socket的长连接,我在服务端要实现这个长连接呢?还有就是我如何使用俩个线程呢,一个是读取服务端返回的数据,一个是向服务端发送数据!方便的话,可以加下您的QQ吗?
我们用的是SOAP协议,不过任何服务器,都应该接收响应后,会有一个返回消息的,这里不需要启动两个线程,同一个线程发送消息,再处理返回的响应就可以了吧。
QQ不怎么上的(白天也上不了),在你的CSDN空间给你留言了。
我已经加您QQ了,完了有时间同意下哈!
现在要用到Socket的长连接,我在服务端要实现这个长连接呢?还有就是我如何使用俩个线程呢,一个是读取服务端返回的数据,一个是向服务端发送数据!方便的话,可以加下您的QQ吗?
我们用的是SOAP协议,不过任何服务器,都应该接收响应后,会有一个返回消息的,这里不需要启动两个线程,同一个线程发送消息,再处理返回的响应就可以了吧。
QQ不怎么上的(白天也上不了),在你的CSDN空间给你留言了。上面21楼有我在客户端和服务端的交互流程,您给看下,要怎么处理这个发送和接收的问题呢!
--发送过来的报文带上用户登录信息;登录成功,在服务器也记录一个成功登录的账号信息;服务器收到的任何一个消息,都校验其登录信息是否合法,是否已登录,来判断是否丢弃此消息。3.2 业务流程(成功登录后)
--这个可以将客户端作为Thread的子类,每次请求,都new一个客户端线程类处理。对于服务端主动发送过来的消息的处理,可以考虑做一个专门的线程,监控服务端主动发送的消息(此时可以将服务端当做客户端,客户端当服务端)3.3 异常流程
--服务端做个时间计数器,超时就将用户登录信息注销;客户端的每次请求操作,都将该时间计数器清零。以上只是一些建议,我也没有具体实现的代码,需要楼主查资料实现啦!LZ可以选择性的参考一下,最好根据实际情况分析是否可行。
另外,别您啊您的,别扭啊,呵呵~
现在正在查找一些资料呢!我现在是客户端,我要和服务端通信的。就目前看得资料来说感觉要用到socket的长连接,但是我发现很多都把长连接指向了服务端,按我的意思理解的是长连接就是客户端和服务端建立连接后,在发送完数据以后不会立即关闭连接,而是通过心跳报文保持连接的,目前的困惑就是在客户端要如何建立一个长连接呢,我都是写一个socket连接后一发送数据再一接收最后不都关闭socket了吗?要如何保持他是一直开着呢!还有我向服务端发送数据以后,接收服务端给我发来的信息的时候,可以读取到,但是他却一直卡在读取数据那一步了,就走不到下面的代码了!
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketManager
{ private Socket socket = null; //socket初始化方法
public SocketManager() throws UnknownHostException, IOException
{
//这里如果出现异常,socket还是会有问题,建议在外层调用
if (null == socket || socket.isClosed())
{
socket = new Socket("10.137.28.189", 8888);
}
} //socket关闭
public void closeSocket()
{
if (null == socket || socket.isClosed())
{
return;
} try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
} //只提供getter方法
public Socket getSocket()
{
return socket;
}
}
每个请求线程,都初始化一个SocketManager实例。使用连接时,get即可,不要对其close操作,直到不想保存此连接,就closeSocket