请问,如何把客户端发来的信息,发送给服务器,服务器接收到信息,将之保存到数据库呢?在线急等~~谢谢各位~

问题描述

这是我的服务器代码:importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.Map;importjava.util.Scanner;importjava.util.concurrent.ConcurrentHashMap;publicclassServer{finalintreceive_port=8008;booleanstarted=false;privateintcount=0;BufferedWriterbw;Filewriterfile;PrintWriteros=null;ConcurrentHashMap<Integer,Socket>clients=newConcurrentHashMap<Integer,Socket>();privateStringfilePath;ServerSocketserver=null;Socketsocket=null;publicvoidsetFilePath(StringfilePath){this.filePath=filePath;}publicServer()throwsException{newThread(newListenClient()).start();}classListenClientimplementsRunnable{publicvoidrun(){try{ServerSocketserver=newServerSocket(8008);while(true){Socketsocket=server.accept();count++;clients.put(count,socket);System.out.println("客户端"+count+"已经连接");MyThreadt=newMyThread(socket,count);MyThreadTwott=newMyThreadTwo(socket,count);t.start();tt.start();}}catch(Exceptione){System.out.println("连接异常!~~~");System.out.println(e.toString());}}}classMyThreadextendsThread{Socketsockett=null;BufferedReaderbuff=null;privateIntegerid;publicMyThread(Socketsocket,Integerid){sockett=socket;this.id=id;}publicvoidrun(){while(true){for(Map.Entry<Integer,Socket>client:clients.entrySet()){try{BufferedWriterwrite=newBufferedWriter(newOutputStreamWriter(client.getValue().getOutputStream()));Socketsocket=client.getValue();InputStreaminput=socket.getInputStream();byte[]by=newbyte[10];input.read(by);Stringbyy=newString(by);if(!byy.equals("")){byy.trim();System.out.println(byy);write.flush();}catch(Exceptione){clients.remove(client.getKey());System.out.println(client.getKey()+"isclosed");continue;}}}}}classMyThreadTwoextendsThread{Socketsockett=null;BufferedReaderbuff=null;privateIntegerid;publicMyThreadTwo(Socketsocket,Integerid){sockett=socket;this.id=id;}publicvoidrun(){while(true){Scannerscan=newScanner(System.in);Stringtmp="";tmp=scan.nextLine();for(Map.Entry<Integer,Socket>client:clients.entrySet()){try{BufferedWriterwrite=newBufferedWriter(newOutputStreamWriter(client.getValue().getOutputStream()));write.write(tmp+"n");//System.out.println("senddatato:"+client.getKey()+"client");write.flush();}catch(Exceptione){e.printStackTrace();}}}}}//文本写入publicvoidwriteFile(Stringpath,Stringcontent,booleanappend){Filewritefile;try{booleanaddStr=append;writefile=newFile(path);FileWriterfw=newFileWriter(writefile,addStr);PrintWriterpw=newPrintWriter(fw);bw=newBufferedWriter(fw);fw.write(content);pw.println("n");pw.println("n");fw.flush();fw.close();}catch(Exceptionex){ex.printStackTrace();}}publicstaticvoidmain(String[]args)throwsException{newServer();}}

时间: 2024-10-21 18:39:04

请问,如何把客户端发来的信息,发送给服务器,服务器接收到信息,将之保存到数据库呢?在线急等~~谢谢各位~的相关文章

C# C/S模式的服务器端如何判断客户端发来的是什么信息

问题描述 我是一个网络编程的菜鸟我想知道服务器端如何判断客户端发来的是什么信息,比如客户端需要注册一个人的信息,那服务器收到信息后怎么判断这个信息是用户名还是密码,或者是文件什么的.希望能有具体的代码和注释,谢谢! 解决方案 解决方案二:协议自己定义就可以了啊,你定义什么包头,什么包体,什么校验,然后客户端按照你定义的规则进行解析不就可以了...解决方案三:比如说你使用NewtoneSoft.Json来进行json跟.net内部对象的转换处理.假设我们收到了一个字符串{"SeqNum"

采用UDP方式,同时向已知ip、同一端口的客户端发同一条信息?

问题描述 采用UDP方式,for循环同时向已知ip.同一端口的客户端发同一条信息,运行时会提示只能打开一次ip端口,问你是否继续处理?这么问题该如何处理?用多线程吗? 解决方案 解决方案二:你的bind语句重复执行了.解决方案三:privatevoidSendMsgToAll(ClassMsgmsg)//SendMsgToAll(ClassMsgmsg)//发送消息给所有用户{try{//QQClass.UDPSocketudp=newQQClass.UDPSocket();foreach(Sy

C# 一个监听 同时判断多个客户端发来的信息,有时候没有监听到!

问题描述 //监听是否有挂起if(tcplistener.Pending()){TcpClienttcp=tcplistener.AcceptTcpClient();stream=tcp.GetStream();try{IFormatterformatter=newBinaryFormatter();car=(CarDataInfo)formatter.Deserialize(stream);this.Invoke((EventHandler)(delegate{stringCnumber=ca

java服务端如何实现对安卓和苹果客户端发来的不同数据格式进行处理和判断?

问题描述 java服务端如何实现对安卓和苹果客户端发来的不同数据格式进行处理和判断? 服务端是java写的,安卓客户端与服务端通信是用java的对象流,直接传对象进行socket通信,但是苹果的客户端不能采用这种方式,现苹果客户端打算用json 格式的字符串与服务端进行socket通信,请问大神们,我该如何对客户端传来的socket流进行判断,到底是安卓发来的还是苹果发来的呢?谢谢! 解决方案 都使用json,不同的客户端用一个字段表示,服务器判断下 解决方案二: 加上信息头,里面包括设备类型,

client发的请求接收返回信息时用send来接收,其余的由receive来接收,怎么改?求大神帮忙

问题描述 client发的请求接收返回信息时用send来接收,其余的由receive来接收,怎么改?求大神帮忙 sever的请求都友client的receive来接收,client发的请求接收返回信息时用send来接收,怎么改下?求大神帮忙,我只会大概写了下代码,菜鸟急需用! package test; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; impo

socket-c#将客户端发来的数据流实时转发给另一个客户端 服务器数据缓冲区的建立问题

问题描述 c#将客户端发来的数据流实时转发给另一个客户端 服务器数据缓冲区的建立问题 我想要实现两部安卓客户端的实时语音通讯,安卓客户端都在内网,因此需要一外网pc做数据的中转服务器,安卓语音发送端通过audiotrack录制PCM音频数据并实时发送到服务器,服务器接收数据并不断读入一个缓冲区,开启另一个线程循环读取缓冲区的数据同时将数据发送到另一个安卓客户端,问题就在于服务器的缓冲区要怎么做?怎么保证缓冲区的数据同时被两个线程操作时的有序稳定 求大神指教,假设网络良好,不考虑网络波动带来的数据

gui-Python-Tkinter请问有什么办法可以在事件处理过程中,即时刷新Text的信息?

问题描述 Python-Tkinter请问有什么办法可以在事件处理过程中,即时刷新Text的信息? 新手刚学了Thinter,我用了for循环往文本框里添加信息,,用的insert方法,点击按钮后结果如下图所示,,表面上看不出控制台的结果跟Text组件的结果有啥区别,,但是事实上左边的Text的信息是4秒后才把添加的四条信息刷新出来的,,然而看到信息里面的用time方法打印出的时间戳确实方法已经处理过-- 也就是说事件发生-循环语句中处理好但是要方法结束后,事件产生的组件信息才会刷新出来? de

我用winform给webserver发送了一个文件,我想让服务器在接收完文件后给客户端发送一个信息

问题描述 我用winform给webserver发送了一个文件,我想让服务器在接收完文件后给客户端发送一个信息 用c#做一个wimform客户端用webclient.uploadfile给服务器发送一个文件,在服务器接收完之后返回一个信息给客户端,首先我需要知道怎么给服务器发送一段字符串,比如"ok",在服务器收到OK之后表示文件接收完了,那么会给客户端返回一个信息,比如"over",然后客户端接收到这个信息.并用messagebox显示出来"over&q

iOS UDP组播服务端收不到客户端发的数据

问题描述 iOS UDP组播服务端收不到客户端发的数据 客户端可以收到服务器发的数据,反过来不行.我想实现双向多播,理论上是可行的吧? 多播绑定的端口是别人向自己发数据的端口吧?加入的多播组应该是向别人发送数据的地址吧? 使用GCDAsyncUdpSocket,为什么只绑定一个端口就行?不是还要绑定IP吗? 本地Socket的IP.端口与发送的目的IP.端口,有点绕晕了,请高手指教 解决方案 bind绑定的是本地的ip地址和端口, 加入多播组的调用中使用对端向外发送的多播ip(通常是224.x.