handlersocketjava里显示,“类没有主方法”

handlersocket  时间:2021-06-21  阅读:()

如何干净的实现Android/Java Socket 长连接通信

我们有时候有这种需求,即我们的android客户端要始终保持与服务端的连接,当服务端有任务或消息发送到android客户端的时候就发送,没有任务或消息的时候不发送但要保持这个连接,一旦有任务则开发发送,而我们的android客户端则要保持一个时刻接收任务或消息的状态。

。

。

这个时候我们通过socket来实现这种需求【当然你也可以采用ept,一旦有相应的socket到达,则启动一个线程去处理2::在线程中处理完返回给我们android客户端的消息或任务之后,要将这种结果表现在ui上,这个步骤方法就比较多了,例如你可以发一个广播来通知ui,或者你可以通过一个static的handler来处理

c#委托的回调 怎么个调?

最典型的应用,就是在异步调用时进行回调,看看MSDN上的例子吧。

using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading;

// State object for reading client data asynchronously public class StateObject { // Client socket. public Socket workSocket = null; // Size of receive buffer. public const int BufferSize = 1024; // Receive buffer. public byte[] buffer = new byte[BufferSize]; // Received data string. public StringBuilder sb = new StringBuilder(); }

public class AsynchronousSocketListener { // Thread signal. public static ManualResetEvent allDone = new ManualResetEvent(false);

public AsynchronousSocketListener() { }

public static void StartListening() { // Data buffer for ing data. byte[] bytes = new Byte[1024];

// Establish the local endpoint for the socket. // The DNS name of puter // running the listener is "". IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

// Create a TCP/IP socket. Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );

// Bind the socket to the local endpoint and listen for ing connections. try { listener.Bind(localEndPoint); listener.Listen(100);

while (true) { // Set the event to nonsignaled state. allDone.Reset();

// Start an asynchronous socket to listen for connections. Console.WriteLine("Waiting for a connection..."); ept( new AsyncCallback(eptCallback), listener );

// Wait until a connection is made before continuing. allDone.WaitOne(); }

} catch (Exception e) { Console.WriteLine(e.ToString()); }

Console.WriteLine(" Press ENTER to continue..."); Console.Read(); }

public static void eptCallback(IAsyncResult ar) { // Signal the main thread to continue. allDone.Set();

// Get the socket that handles the client request. Socket listener = (Socket) ar.AsyncState; Socket handler = ept(ar);

// Create the state object. StateObject state = new StateObject(); state.workSocket = handler; handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state); }

public static void ReadCallback(IAsyncResult ar) { String content = String.Empty; // Retrieve the state object and the handler socket // from the asynchronous state object. StateObject state = (StateObject) ar.AsyncState; Socket handler = state.workSocket;

// Read data from the client socket. int bytesRead = handler.EndReceive(ar);

if (bytesRead > 0) { // There might be more data, so store the data received so far. state.sb.Append(Encoding.ASCII.GetString( state.buffer,0,bytesRead));

// Check for end-of-file tag. If it is not there, read // more data. content = state.sb.ToString(); if (content.IndexOf("<EOF>") > -1) { // All the data has been read from the // client. Display it on the console. Console.WriteLine("Read {0} bytes from socket. Data : {1}", content.Length, content ); // Echo the data back to the client. Send(handler, content); } else { // Not all data received. Get more. handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state); } } } private static void Send(Socket handler, String data) { // Convert the string data to byte data using ASCII encoding. byte[] byteData = Encoding.ASCII.GetBytes(data);

// Begin sending the data to the remote device. handler.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), handler); }

private static void SendCallback(IAsyncResult ar) { try { // Retrieve the socket from the state object. Socket handler = (Socket) ar.AsyncState;

// Complete sending the data to the remote device. int bytesSent = handler.EndSend(ar); Console.WriteLine("Sent {0} bytes to client.", bytesSent);

handler.Shutdown(SocketShutdown.Both); handler.Close();

} catch (Exception e) { Console.WriteLine(e.ToString()); } }

public static int Main(String[] args) { StartListening(); return 0; } }

java里显示,“类没有主方法”

“类没有主方法”是由于程序入口main没有找到! 在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。

报错

knownhost西雅图/亚特兰大/阿姆斯特丹$5/月,2个IP1G内存/1核/20gSSD/1T流量

美国知名管理型主机公司,2006年运作至今,虚拟主机、VPS、云服务器、独立服务器等业务全部采用“managed”,也就是人工参与度高,很多事情都可以人工帮你处理,不过一直以来价格也贵。也不知道knownhost什么时候开始运作无管理型业务的,估计是为了扩展市场吧,反正是出来较长时间了。闲来无事,那就给大家介绍下“unmanaged VPS”,也就是无管理型VPS,低至5美元/月,基于KVM虚拟,...

RackNerd:特价美国服务器促销,高配低价,美国多机房可选择,双E526**+AMD3700+NVMe

racknerd怎么样?racknerd今天发布了几款美国特价独立服务器的促销,本次商家主推高配置的服务器,各个配置给的都比较高,有Intel和AMD两种,硬盘也有NVMe和SSD等多咱组合可以选择,机房目前有夏洛特、洛杉矶、犹他州可以选择,性价比很高,有需要独服的朋友可以看看。点击进入:racknerd官方网站RackNerd暑假独服促销:CPU:双E5-2680v3 (24核心,48线程)内存...

IntoVPS:按小时计费KVM月费5美元起($0.0075/小时),6个机房可选

IntoVPS是成立于2004年的Hosterion SRL旗下于2009年推出的无管理型VPS主机品牌,商家提供基于OpenStack构建的VPS产品,支持小时计费是他的一大特色,VPS可选数据中心包括美国弗里蒙特、达拉斯、英国伦敦、荷兰和罗马尼亚等6个地区机房。商家VPS主机基于KVM架构,最低每小时0.0075美元起($5/月)。下面列出几款VPS主机配置信息。CPU:1core内存:2GB...

handlersocket为你推荐
财务系统软件财务管理软件是什么软件oledbdatareader根据输入信息读取数据库中的数据,总是在执行OleDbDataReader reader = cmd.ExecuteReader()时通不过,ico监管BTCB是什么?暴力破解rar怎么暴力破解rar密码?快速且有效的webservice框架用JAVA作APP后端,一般用什么web service?用什么restful框架netbios协议NETBEUI协议有什么用?云输入法QQ云输入法怎样进行中英文切换?腾讯合作伙伴大会从微信同程旅行买的机票怎么打印电子发票?医院排队系统医院排队叫号系统有哪些功能?特斯拉model3降价小鹏P7和特斯拉Model 3,买哪个更加划算?
网络域名 asp.net主机 mediafire 20g硬盘 创宇云 panel1 国外免费全能空间 cdn加速是什么 免费phpmysql空间 服务器托管价格 免备案jsp空间 phpinfo sonya so域名 卡巴斯基免费版 cc攻击 防盗报警主机 彩虹云点播点点版 北京公租房申请网站 北京机动车摇号申请网站 更多