基于多线程
Server:
import socket
import threading
#接收数据
def recive(sock):
while True:
try:
data = sock.recv(1024)
print("Recive:{}".format(data.decode("utf-8")))
T_trans=threading.Thread(target=broadcast_data,args=(sock, data,))
T_trans.start()
# sock.send(data)
# sock.send("From Server:{}".format(data).encode("utf-8"))
except:
print(str(addr) + "---offLine!")
CONNECTION_LIST.remove(sock)
exit()
def handle_sock(sock, addr):
#开线程接收客户端数据
T_recive=threading.Thread(target=recive,args=(sock,))
T_recive.start()
#广播消息,若不在线删除
def broadcast_data(sock, message):
for socket in CONNECTION_LIST:
if socket != sock:
try:
socket.send(message)
except:
socket.close()
CONNECTION_LIST.remove(socket)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 10086))
server.listen()
CONNECTION_LIST = []
#主线程循环接收客户端连接
while True:
sock, addr = server.accept()
CONNECTION_LIST.append(sock)
print('Connect--{}'.format(addr))
#连接成功后开一个线程用于处理客户端
client_thread = threading.Thread(target=handle_sock, args=(sock, addr))
client_thread.start()
Client:
import socket
import threading
#接收数据
def recive(client):
while True:
data = client.recv(1024)
print("Recive:{}".format(data.decode("utf-8")))
#连接服务器
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 10086))
#开线程 用于接收数据
t_recive=threading.Thread(target=recive, args=(client,))
t_recive.start()
#主线程用于发送数据
while True:
re_data = input()
client.send(re_data.encode("utf-8"))
# client.close()
安卓Java端-接收:
package Socket;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class client
{
public static void main(String[] args) throws Exception {
Socket client=new Socket("106.12.194.69",10010);
InputStream is = client.getInputStream();
while(true){
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String mess = br.readLine();
System.out.println("服务器:"+mess);
}
}
}
版权声明:本文为weixin_41967600原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。