ImageVerifierCode 换一换
格式:DOCX , 页数:5 ,大小:17.12KB ,
资源ID:20542310      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20542310.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java与C#之间的socket通信Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java与C#之间的socket通信Word下载.docx

1、+i+个用户.); try Socket client=server.accept();第个用户连接完成! exec.execute(new PDAServerWithDB(client); catch(Exception whileExp) String msg = 多线程处理连接失败!; MyLogManager.ErrorLog(log, whileExp, msg); i+;catch(IOException ioe)连接失败! MyLogManager.ErrorLog(log, ioe, msg); exec.shutdown();具体对于Socket信息的接受和发送在PDASer

2、verWithDB类中处理信息处理分为:接收数据和发送数据服务端接收数据一律采用ReadLine()方法,这就要求客户端在发送请求时要有行结束符。服务器的接收发送数据的代码a)。构造输入输出流InputStream inPut = s.getInputStream();OutputStream outPut = s.getOutputStream();PrintWriter outWriter=new PrintWriter(outPut);BufferedReader inputReader =new BufferedReader(new InputStreamReader(inPut);b

3、。接收客户端请求的代码String request = inputReader.readLine();request = request.trim();request = request.replaceAll(n, c。向客户端发送文本数据的代码outWriter.println(strInfo);outWriter.flush();d)。向客户端发送文件的代码/ 发送文件长度File file = new File(filePath);byte outBytes = new byte1024;int count = 0;FileInputStream fileInput = new File

4、InputStream(file);ByteArrayOutputStream ow = new ByteArrayOutputStream();while (count = fileInput.read(outBytes) 0) MyLogManager.DebugLog(log, null, String.valueOf(count);ow.write(outBytes, 0, count);outPut.write(ow.toByteArray();/outWriter.print(ow);/这个在JAVA客户端时可以正常响应,而在C#客户端中无法响应。/outWriter.flush(

5、);二、客户端(使用java和c#两个版本)1).发送请求信息(字符串格式)对于JAVA来说:直接使用PrintWrite类的println()方法即可。而对于C#来说:需要使用socket.Send(System.Text.Encoding.ASCII.GetBytes(msg + r);需要在请求信息msg后面加上一个行结束标志符。2).接收数据(文本或者文件)2-1).java客户端接收数据java接收文本的代码示例:*代码示例*log.info(开始连接服务器InetAddress address = InetAddress.getByName(AppConfig.IP);/193.1

6、00.100.143);SocketChannel sc = SocketChannel.open(new InetSocketAddress(address,AppConfig.PORT);服务器连接成功/连接成功 初始化流InputStream inputStream = Channels.newInputStream(sc);InputStreamReader is = new InputStreamReader(inputStream,GBKin = new BufferedReader(is);接收服务器的数据 String responseLine=while (responseL

7、ine = in.readLine() != null) /用readLine接收数据是,会自动抛弃换行符,如果为了保持数据的格式,需要在这里加上一个换行标识符returnStr += responseLine+接收服务器的数据完毕*b.)java接收文件的示例代码:*代码示例*InetAddress address = InetAddress.getByName(193.100.100.159服务器连接成功,开始初始化流OutputStream outputStream = Channels.newOutputStream(sc);InputStreamReader inputStreamR

8、eader = new InputStreamReader(inputStream);byte b = new byte1024;ByteArrayOutputStream bArrStream = new ByteArrayOutputStream(fileLength);int readCount = 0;while (readCount = inputStream.read(b) != -1) log.info(readCount);bArrStream.write(b, 0, readCount);size:+bArrStream.toByteArray().length);2-2.)

9、 c#客户端接收数据的代码a.)接收文本数据Socket socket = null;MemoryStream memStream = null;string returnMsg = string.Empty;/与服务器建立连接socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPAddress add = IPAddress.Parse(appConfig.Ip);IPEndPoint endPt = new IPEndPoint(add, appConfig.Port);

10、socket.Connect(endPt);/接收数据byte buffer = new byte1024;int recCount = 0;memStream = new MemoryStream();/接收返回的字节流while (recCount = socket.Receive(buffer) 0)memStream.Write(buffer, 0, recCount);Encoding encoding = Encoding.GetEncoding(returnMsg = encoding.GetString(memStream.GetBuffer(), 0, memStream.G

11、etBuffer().Length);b.)接收文件数据*代码示例*MemoryStream memStream = new MemoryStream();/接下来按照文件格式,将memStream保存为文件即可=以上是最终使用的代码版本=在开发过程中出现的问题及其解决1.)文本乱码问题java服务器端代码文件是使用GBK编码。所以在客户端读取的时候使用GBK编码进行转换。2.)客户端和服务端的交互。在服务端使用PrintWriter类来封装数据发送流(发送数据),new BufferedReader(new InputStreamReader(InputStream)来封装输入流(读取数据)

12、服务端读数据的时候是使用ReadLine方法,所以就要求客户端发送请求时需要有一个行结束标志。对于java来说是用println()即可,而对于C#则需要在发送信息的后面手动增加一个行结束标识符。对于服务端的反馈信息有两种反馈方式,一个是println(),一个是write(byte)。前者是文本的发送,后者是文件的发送。在使用print(object)方法对文件发送时,java客户端可是正确的接收数据,而C#客户端却不能,所以才采用了write(byte)方法进行发送。接收数据时,还要对按行发送的文本数据进行去尾处理这个处理java和c#一样,只是方法名的大小写不同str = str.tri

13、m();str = str.replaceAll(方法二:public static void Send(String content) throws IOException Socket s = new Socket(ip,port); DataOutputStream out = new DataOutputStream(s.getOutputStream(); String temp = content; int length = temp.getBytes().length; byte b = temp.getBytes(); out.writeInt(length); out.write(b); out.flush(); 可以用上面的方法来发送到指定的端口,然后C#用只要监听端口就可以了,先接收一个int的报文长度,然后new出一个byte然后再接收一个byte,然后通过这个byte转换成String就可以了欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1