unity用socket(TcpLitsener)来操作sqlserver
unity用socket(TcpLitsener)来操作sqlserver
最近几天都在搞unity操作Sql server,也用到了底层通信的东西,局域网测试是通过了的,要谢谢我龙哥(灰太龙),他太厉害了,呵呵~~~源代码我忘记拷贝过来了,所以大概写了一下,我发现OnGUI里面的UI在服务端不大好弄啊,我这里没有用到多线程,用到了数组。
0.看看思路:
1.安装好sqlserver还需要一些dll文件,unity本身里面就有的,在路径E:\Unity\Editor\Data\Mono\lib\mono\2.0下有I18N.dll,I18N.CJK.dll和I18N.West.dll,以及System.Data.dll。
我这里安装的是sqlserver2005开发版。http://www.cnblogs.com/icewee/articles/2019783.html
2.那就是建表咯,这个就不多说了啊。
3.服务端连接数据库。
连接数据库:
- con = new SqlConnection("Data Source=WANGXF;User ID=sa;Password=sa;database=data1");
- con.Open();
con = new SqlConnection("Data Source=WANGXF;User ID=sa;Password=sa;database=data1"); con.Open();查找读取数据库:
- SqlDataReader Select(string content){
- SqlCommand cmd=new SqlCommand(content,con);
- SqlDataReader reader = cmd.ExecuteReader();
- return reader;
- }
SqlDataReader Select(string content){ SqlCommand cmd=new SqlCommand(content,con); SqlDataReader reader = cmd.ExecuteReader(); return reader; }
修改,增加:
- void Reset(string content){
- SqlCommand cmd =new SqlCommand(content,con);
- cmd.ExecuteNonQuery();
- }
void Reset(string content){ SqlCommand cmd =new SqlCommand(content,con); cmd.ExecuteNonQuery(); }
4.客户端和服务端同学
服务端:
- using System.Net;
- using System;
- public class Sender{
- NetworkStream stream;
- /*服务器端开启监听*/
- public TcpListener open(){
- TcpListener server=null;
- string ip="192.168.1.103";
- int iport=5561;
- IPAddress address=IPAddress.Parse(ip);
- server=new TcpListener(address,iport);
- server.Start();
- return server;
- }
- /*添加正在向服务端发送请求的客户端*/
- public TcpClient addClient(TcpListener server){
- TcpClient client=null;
- if(server.Pending()){
- client = server.AcceptTcpClient();
- }
- return client;
- }
- /*向客户端发送消息*/
- public void send(ArrayList clients,string data) {
- byte[] msg = System.Text.Encoding.UTF8.GetBytes(data);
- for(int i=0;i<clients.Count;i++){
- stream = (clients[i] as TcpClient).GetStream();
- stream.Write(msg,0,msg.Length);
- }
- }
- /*接收客户端的消息*/
- public string receive (ArrayList clients) {
- Byte[] bytes = new Byte[4096];
- string data="";
- int i=0;
- for(int j=0;j<clients.Count;j++){
- if((clients[j] as TcpClient).Available!=0){
- stream = (clients[j] as TcpClient).GetStream();
- if((i = stream.Read(bytes,0, bytes.Length))!=0)
- {
- data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
- }
- if(data.Contains("Exit")){
- (clients[j] as TcpClient).Close();
- clients.RemoveAt(j);
- }
- }
- }
- return data;
- }
- }
using System.Net; using System; public class Sender{ NetworkStream stream; /*服务器端开启监听*/ public TcpListener open(){ TcpListener server=null; string ip="192.168.1.103"; int iport=5561; IPAddress address=IPAddress.Parse(ip); server=new TcpListener(address,iport); server.Start(); return server; } /*添加正在向服务端发送请求的客户端*/ public TcpClient addClient(TcpListener server){ TcpClient client=null; if(server.Pending()){ client = server.AcceptTcpClient(); } return client; } /*向客户端发送消息*/ public void send(ArrayList clients,string data) { byte[] msg = System.Text.Encoding.UTF8.GetBytes(data); for(int i=0;i<clients.Count;i++){ stream = (clients[i] as TcpClient).GetStream(); stream.Write(msg,0,msg.Length); } } /*接收客户端的消息*/ public string receive (ArrayList clients) { Byte[] bytes = new Byte[4096]; string data=""; int i=0; for(int j=0;j<clients.Count;j++){ if((clients[j] as TcpClient).Available!=0){ stream = (clients[j] as TcpClient).GetStream(); if((i = stream.Read(bytes,0, bytes.Length))!=0) { data = System.Text.Encoding.UTF8.GetString(bytes, 0, i); } if(data.Contains("Exit")){ (clients[j] as TcpClient).Close(); clients.RemoveAt(j); } } } return data; } }
客户端:
- using UnityEngine;
- using System.Collections;
- using System.Net.Sockets;
- using System.Net;
- using System.Text;
- using System.IO;
- using System;
- public class Receiver{
- /*连接服务器端*/
- public void connect(TcpClient client)
- {
- string ip="192.168.1.103";
- int iport=5561;
- client.Connect(ip, iport);
- }
- /*接收服务器端消息*/
- public string receive (TcpClient client)
- {
- string data="";
- int i=0;
- Byte[] bytes = new Byte[4096];
- NetworkStream stream = client.GetStream();
- if(client.Available!=0){
- if((i = stream.Read(bytes,0, bytes.Length))!=0)
- {
- data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
- }
- }
- return data;
- }
- /*向服务器端发送消息*/
- public void send(TcpClient client,string data)
- {
- NetworkStream stream = client.GetStream();
- byte[] msg = System.Text.Encoding.UTF8.GetBytes(data);
- stream.Write(msg,0,msg.Length);
- }
- }
using UnityEngine; using System.Collections; using System.Net.Sockets; using System.Net; using System.Text; using System.IO; using System; public class Receiver{ /*连接服务器端*/ public void connect(TcpClient client) { string ip="192.168.1.103"; int iport=5561; client.Connect(ip, iport); } /*接收服务器端消息*/ public string receive (TcpClient client) { string data=""; int i=0; Byte[] bytes = new Byte[4096]; NetworkStream stream = client.GetStream(); if(client.Available!=0){ if((i = stream.Read(bytes,0, bytes.Length))!=0) { data = System.Text.Encoding.UTF8.GetString(bytes, 0, i); } } return data; } /*向服务器端发送消息*/ public void send(TcpClient client,string data) { NetworkStream stream = client.GetStream(); byte[] msg = System.Text.Encoding.UTF8.GetBytes(data); stream.Write(msg,0,msg.Length); } }
以上只是一些主要的内容,我把工程放到我的资源里面了。http://download.csdn.net/detail/dlnuchunge/4734166
以上内容都是我乱盖的,不足的地方往大家见谅,多多指点~~~~