关键词:
服务器端程序
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net; 5 using System.Net.Sockets; 6 using System.Text; 7 using System.Threading.Tasks; 8 namespace 聊天室_服务器端_TCP 9 10 class Program 11 12 //存放客户端 13 static List<Client> clientList = new List<Client>(); 14 15 //广播消息 16 public static void BroadCastMessage(string message) 17 18 //创建未连接的list 19 var notConnectedList = new List<Client>(); 20 foreach(Client client in clientList) 21 22 if (client.Connected) //给所有连接的客户端发送消息; 23 client.SendMessage(message); 24 else //把未连接的客户端加入list 25 26 notConnectedList.Add(client); 27 28 29 //移除未连接的客户端 30 foreach(var temp in notConnectedList) 31 32 clientList.Remove(temp); 33 34 35 36 static void Main(string[] args) 37 38 //实例化服务器端Socket并指定IP地址类型(IPV4),套接字类型(流类型),通信协议(TCP) 39 Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 40 41 //绑定终端(设置IP地址,端口号(范围为0-65535之间随意取,为避免端口号已被其他软件占用,可以取大点)) 42 tcpServer.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.107"), 7788)); 43 44 //开始监听,等待客户端接入,接入后执行后续操作 45 tcpServer.Listen(100); 46 Console.WriteLine("开始监听"); 47 48 //循环等待客户端接入 49 while (true) 50 51 52 Socket ClientSocket = tcpServer.Accept(); 53 Console.WriteLine("一个客户端连接进来了"); 54 Client client = new Client(ClientSocket); 55 clientList.Add(client); 56 57 58 59 60
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net.Sockets; 5 using System.Text; 6 using System.Threading; 7 using System.Threading.Tasks; 8 9 namespace 聊天室_服务器端_TCP 10 11 public class Client 12 13 private Socket clientsocket; 14 private Thread t; //线程 15 private byte[] data = new byte[1024]; 16 public Client(Socket s) 17 18 this.clientsocket = s; 19 20 //启动一个线程,处理客户端数据接收 21 t = new Thread(ReceiveMessage); 22 t.Start(); 23 24 25 private void ReceiveMessage() 26 27 //一直接收客户端数据 28 while(true) 29 30 if(clientsocket.Poll(10,SelectMode.SelectRead)) 31 32 clientsocket.Close(); 33 break; 34 35 int length= clientsocket.Receive(data); 36 string message = Encoding.UTF8.GetString(data, 0, length); 37 //接收到数据时,要把这个数据分发到客户端 38 //广播消息 39 Program.BroadCastMessage(message); 40 Console.WriteLine("收到消息:" + message); 41 42 43 44 //发送消息给客户端 45 public void SendMessage(string message) 46 47 byte[] data = Encoding.UTF8.GetBytes(message); 48 clientsocket.Send(data); 49 50 51 //判断是否连接 52 public bool Connected 53 54 get return clientsocket.Connected; 55 56 57
客户端
1 using System.Collections; 2 using System.Collections.Generic; 3 using System.Net.Sockets; 4 using UnityEngine; 5 using System.Net; 6 using System.Text; 7 using UnityEngine.UI; 8 using System.Threading; 9 10 public class ChatManger : MonoBehaviour 11 12 public string ipaddress = "192.168.0.107"; 13 public int port = 7788; 14 public Text Input; //InputField中显示输入的text 15 public Text Label; //聊天室显示的text 16 17 private Socket client_socket; 18 private Thread t; 19 private byte[] data = new byte[1024]; //数据容器 20 private string message = ""; //消息容器 21 // Use this for initialization 22 void Start () 23 OnConnectedToServer(); 24 25 26 // Update is called once per frame 27 void Update () 28 if(message!=""&&message!=null) 29 30 Label.text += " " + message; 31 message = ""; 32 33 34 35 //连接至服务器,并创建一个新线程用于接受消息 36 public void OnConnectedToServer() 37 38 client_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 39 client_socket.Connect(new IPEndPoint(IPAddress.Parse(ipaddress),port)); 40 41 t = new Thread(ReceiveMessage); 42 t.Start(); 43 44 45 //接收消息 46 public void ReceiveMessage() 47 48 while(true) 49 50 if (client_socket.Poll(10, SelectMode.SelectRead)) 51 52 client_socket.Close(); 53 break; 54 55 int length = client_socket.Receive(data); 56 message = Encoding.UTF8.GetString(data, 0, length); 57 //Label.text += " " + message; unity不允许在单独的线程里去操控其组件 58 59 60 //发送消息 61 public new void SendMessage(string message) 62 63 byte[] data = Encoding.UTF8.GetBytes(message); 64 client_socket.Send(data); 65 66 //点击发送按钮 67 public void OnSendButtonClick() 68 69 70 SendMessage(Input.text); 71 Input.GetComponentInParent<InputField>().text = ""; 72 73 74 //当Mono被销毁时调用此方法 75 private void OnDestroy() 76 77 client_socket.Shutdown(SocketShutdown.Both); 78 client_socket.Close(); 79 80
网络编程之tcp客户端开发和tcp服务端开发(代码片段)
...字建立连接发送数据接收数据关闭客户端套接字 importsocketif__name__==‘__main__‘:#创建tcp客户端套接字#1.AF_INET:表示ipv4#2.SOCK_STREAM:tcp传输协议tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#和服务端应用程序建立连接tcp_clie... 查看详情
ajax简单应用之个人简历页面搭建(代码片段)
1.搭建HTTP静态Web服务器。代码实现:1#1.导入socket模块2importsocket3importthreading456#创建服务器类7classHttpServerSocket(object):8#给服务器类的对象设置属性9def__init__(self):10#2.创建Socket对象11self.server_socket=socket.socket(socket.AF_I 查看详情
tcp服务端socket
importsocketif__name__==‘__main__‘:#创建tcp服务端sockettcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#立即释放端口号,重用端口#SOL_SOCKET:表示当前socket#SO_REUSEADDR:是否立即释放端口选项#True:表示立即释放端口tcp_server_ 查看详情
网络编程-tcp(代码片段)
...于打电话,需要先建立链接,区分客户端与服务端。importsocketdefmain():#1.创建tcp的套接字tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2.链接服务器#tcp_socket.connect(("192.168.33.11",7890))server_ip=input("请输入要链接的服务器的ip:")server_por... 查看详情
tcp_协议_socket接口-jmeter
1.ip2.端口号 3.传入参数4.告诉软件返回 最后以为是什么,不然就会报错或者无限制的等待 查ascll码表 启动接口的方法 查看详情
tcp文件下载客户端+服务端
客户端:importsocketif__name__==‘__main__‘:#创建tcp客户端sockettcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#和服务端socket建立连接tcp_client_socket.connect(("192.168.131.106",7878))#接收用户输入的文件名fil 查看详情
java利用tcp编程实现简单聊天室
...体可以去尚学堂官网观看视频学习一、实现思路 实现聊天室的最核心部分就是JAVA的TCP网络编程。 TCP传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,在Java中我们利用ServerSocket类来建立服务端,... 查看详情
游戏开发实战unity使用socket通信实现简单的多人聊天室(万字详解|网络|tcp|通信|mirror|networking)(代码片段)
文章目录一、前言二、简单的Socket通信:多人聊天室1、服务端:python代码1.1、importsocket1.2、构造socket对象1.3、绑定/监听端口1.3、监听客户端连接1.4、接收客户端socket消息1.5、多线程1.6、完整代码:game_server.py2、客户... 查看详情
游戏开发实战unity使用socket通信实现简单的多人聊天室(万字详解|网络|tcp|通信|mirror|networking)(代码片段)
文章目录一、前言二、简单的Socket通信:多人聊天室1、服务端:python代码1.1、importsocket1.2、构造socket对象1.3、绑定/监听端口1.3、监听客户端连接1.4、接收客户端socket消息1.5、多线程1.6、完整代码:game_server.py2、客户... 查看详情
qt学习_网络编程_tcp通信聊天(代码片段)
网络编程TCP通信1.用到的类QTcpServer公共函数:void close()QString errorString()constbool isListening()constbool listen(constQHostAddress&address=QHostAddress::Any,quint16port=0)QHostAddre 查看详情
python高性能代码之多线程优化(代码片段)
...常见的端口扫描器为实例端口扫描器的原理很简单,操作socket来判断连接状态确定主机端口的开放情况。importsocketdefscan(port):s=socket.socket()ifs.connect_ex((‘localhost‘,port))==0:printport,‘open‘s.close()if__name__==‘__main__‘:map(scan,range(1,655 查看详情
python-tcp服务端程序开发(代码片段)
...套接字被动套接字:不能收发信息TCP服务端的流程:1.创建socket对象2.绑定,固定服务器的ip和端口3.设置监听,将主动套接字变成被动套接字,可以接收新的客户端连接,4.阻塞等待客户端的连接,有客户端连接,会返回一个新的socket,用来... 查看详情
基于tcp协议简单qq聊天(代码片段)
#server端importsocketip_port=(‘127.0.0.1‘,8080)sk=socket.socket()sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)sk.bind(ip_port)sk.listen()conn,addr=sk.accept()whileTrue:msg=conn.recv(1024).deco 查看详情
udp之socket通讯
分享一个简单的socket通讯,简单易理解TCP协议与UDP协议的区别1.基于连接与无连接;2.对系统资源的要求(TCP较多,UDP少);3.UDP程序结构较简单;4.流模式与数据报模式;5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP... 查看详情
线程进阶
在了解进程之后,我们可以做一个多线程的聊天室服务端importsocketfrommultiprocessingimportProcessdeftalk(conn):conn.send(b‘connected‘)ret=conn.recv(1024)print(ret)if__name__==‘__main__‘:sk=socket.socket()sk.bind((‘127.0.0.1‘,808 查看详情
pythonsocket聊天室(tcpserverclient)(代码片段)
importsocket,os,hmac,pickle,threading,datetimeclassServer:def__init__(self,secret_key):self.sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)self.addr=(\'127.0.0.1\',8088)self.users=self.secret_ 查看详情
一个简单的网络聊天程序实现
socket简介Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个so... 查看详情
java网络编程基础—基于tcp的nio简单聊天系统
在Java网络编程基础(四)中提到了基于Socket的TCP/IP简单聊天系统实现了一个多客户端之间护法消息的简单聊天系统。其服务端采用了多线程来处理多个客户端的消息发送,并转发给目的用户。但是由于它是基于Socket的,因此是... 查看详情