python搭建服务器实现两个Android客户端间收发消息
本文为大家分享了python搭建服务器实现两个Android客户端间收发消息,供大家参考,具体内容如下
python服务器
#coding:utf-8 importsocket importthreading importtime defhandle_client(client_socket,client_id): """处理客户端请求""" #获取客户端请求数据 whileTrue: try: request_data=client_socket.recv(1024) exceptException: time.sleep(0.2) continue iflen(request_data)>0: request_lines=request_data.splitlines() print(request_lines[0].decode("utf-8")) #res=int(request_lines[0])+1 client_socket_list[(client_id+1)%2].send(bytes(str(request_lines[0].decode("utf-8"))+"\n","utf-8")) client_socket_list.remove(client_id) if__name__=="__main__": server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) """ socket()是一个函数,创建一个套接字, AF_INET表示用IPV4地址族, SOCK_STREAM是说是要是用流式套接字 """ #server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)#设置地址重用 server_socket.bind(("10.2.70.42",8000))#绑定端口 server_socket.listen(2)#开启监听 client_socket_list=[] client_num=0 Isready=False whileTrue: client_id=client_num client_socket,client_address=server_socket.accept() print("[%s,%s]用户连接上了"%client_address) handle_client_thread=threading.Thread(target=handle_client,args=(client_socket,client_id)) """ tartget表示这个进程到底要执行什么行为 args是target要接受的参数 """ client_socket_list.append(client_socket) client_num+=1 iflen(client_socket_list)==3: client_socket_list.pop(0) client_socket.setblocking(0) handle_client_thread.start()
Android客户端-Java代码
packagecom.example.administrator.wuziqi_intenet; importandroid.os.Handler; importandroid.os.Message; importandroid.support.v7.app.AppCompatActivity; importandroid.os.Bundle; importandroid.view.View; importandroid.widget.Button; importandroid.widget.EditText; importandroid.widget.TextView; importandroid.widget.Toast; importjava.io.BufferedReader; importjava.io.BufferedWriter; importjava.io.IOException; importjava.io.InputStreamReader; importjava.io.OutputStreamWriter; importjava.net.Socket; importjava.net.URLDecoder; importjava.net.UnknownHostException; importstaticcom.example.administrator.wuziqi_intenet.R.id.button1; publicclassMainActivityextendsAppCompatActivity{ Buttonbutton=null; TextViewtextView=null; EditTexteditText=null; Socketsocket; BufferedWriterpw=null; BufferedReaderis=null; Stringstring="baba"; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); newThread(){ @Override publicvoidrun(){ try{ socket=newSocket("10.2.70.42",8000); socket.setSoTimeout(10000); pw=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())); is=newBufferedReader(newInputStreamReader(socket.getInputStream())); }catch(IOExceptione){ e.printStackTrace(); } } }.start(); button=(Button)findViewById(button1); textView=(TextView)findViewById(R.id.textview); editText=(EditText)findViewById(R.id.input); handler.sendEmptyMessageDelayed(1,100); button.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewview){ newThread(){ @Override publicvoidrun() { Stringmsg=editText.getText().toString(); try{ pw.write(msg); pw.flush(); }catch(UnknownHostExceptione){ Toast.makeText(MainActivity.this,"失败1",Toast.LENGTH_SHORT).show(); e.printStackTrace(); }catch(IOExceptione){ Toast.makeText(MainActivity.this,"失败2",Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } }.start(); editText.setText(""); } }); } privateHandlerhandler=newHandler(){ publicvoidhandleMessage(Messagemessage){ try{ Moving(); }catch(IOExceptione){ e.printStackTrace(); } } }; privatevoidMoving()throwsIOException{ newThread(){ @Override publicvoidrun(){ try{ if(is.ready()) string=is.readLine(); }catch(IOExceptione){ e.printStackTrace(); } } }.start(); byte[]b=string.getBytes(); Strings1=newString(b); System.out.println(s1); textView.setText(string); handler.sendEmptyMessageDelayed(1,100); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。