2015-02-11 55 views
0

我试图做一个客户端/套接字程序,涉及从客户端发送一个字符串(以确定应该使用哪个键)到服务器,服务器发回一个以字节形式输入密钥,然后客户端以字符串形式发送文件请求,服务器将请求的文件发送给用户,用户可以用它们解密密钥。 我理解密码学方面,我挂在如何区分发送字节,字符串或文件到服务器和从服务器。我知道如何发送单个流(字节,字符串或文件),但无法找到一种方法将所有这些流发送到一个流中,如果这有意义的话? 每次我想发送一个字符串,然后一个新的发送字节,然后一个新的发送文件,我必须创建一个新的流或套接字连接吗?如何通过套接字连接发送不同的数据类型

我可能会查找的任何资源?干杯!

+0

http://stackoverflow.com/questions/26830233/send-multiple-data-type-over-socket – Mudit 2015-02-11 21:26:59

回答

2

基本上,通过套接字连接发送的是一串字节。这可以表示一个字符串,字符或一串字符串..等等。

如果你想在一个数据包中发送全部数据,你需要为每种类型的数据结构指定长度,即字符串最大为1024个字节,字节最大为512个字节......等等这样做将使您能够解密接收端的信息。

如果您没有最大大小并且不想设置它们,那么您可以采取不同的方法并将每个数据结构发送到它自己的数据包中。如果你采用这个路由,你需要指定数据包的第一个字节来标记接收方是什么类型的数据;即1 =字节,2 =字符串,3 =阵列等

+0

我相信数据包是抽象的,不一定说你想要在自己的数据包中发送数据结构,而只需要通过连线发送X字节的数据,并让TCP/IP堆栈处理数据包组块。我可能在这个问题上是错误的,因为这只是C socket的工作原理,这是一个Java问题。 – JNYRanger 2015-02-11 21:32:08

+0

我正在给予高层次的细分。在连线上,TCP/UDP和IP通常会将数据包和其他东西一样分段。不过,从端到端的角度来看,如果@Java Noob不喜欢我的第一个建议,我说他可以分别发送每一条数据,并为这些数据添加一个标志字节。 – 2015-02-11 21:35:42

+0

我明白你的意思了。你已经得到了我的赞同,但只是想确保OP不会因为处理包大小而感到困惑 – JNYRanger 2015-02-11 21:39:09

相关问题