问题二:客户端怎么连接到服务器的数据库上? 既然是这种数据库,那你就在你的电脑上装SQL SEVER数据库,然后下载对应的数据库管理软件就行了,当然在你安装完本地的数据库后要想访问远程服务器上的数据库一定需要配置,至于你说的一步一步,我觉得你应该百度搜一下,具体的安装都有
问题三:Java中客户端与服务器之间怎样连接? socket通信
客户端:Socket s= new Socket (localhost,8888)
服务器:ServerSocket ss户= new ServerSocket(8888)
Socket s=ss.accept()
问题四:客户端无法连接到服务器 您好
您可以尝试一下右击服务器的我的电脑-属性,找到远程桌面的部分,允许下
到服务器防火墙看看,是不是禁用了远程桌面,不懂的话直接关闭防火墙,也希望你没安装第三方网络防火墙
问题五:跪求金蝶K3客户端怎么连接服务器 K3客户端和服务器都要完整安装好,确定是在同一个网关内,并且能够相互PING得通。
然后再服务器上新建一个,与客户端开机登录的用户名和密码一致的用户(我的电脑->右击->管理->本地用户和组->用户),
之后就是在客户端远程组建配置工具中测试,通过后确定就OK了。
问题六:java怎么知道客户端连接服务器 java socket就可以完成
问题七:Android客户端怎么与服务器数据库连接? 客户端和服务端的数据库连接,是要服务器端做开发的,像javaee开发的服务端,然后客户端通过等连接到服务端,然后服务端通过一系列 *** 作,吧数据返回给客户端,这样就完成了一次连接。
问题八:上网认证客户端无法连接认证服务器怎么办? 认证客户端常见问题解答
1.客户端一运行即消失的故障?
答:故障原因:如果用户的电脑设置了多个DNS或多个IP地址及系统里有system32.exe这个进程,可能是木马进程序,有可能伪装成其它的名字的话,会导致以上故障。
故障解决办法如下:正确设置IP地址(只设置网络中心提供的地址)及DNS地址。
2.客户端提示“找不到合适的网卡”故障信息?
答:故障原因:系统没有正确获得网卡信息,或者网卡有问题。
故障解决办法如下:退出并重新打开客户端,如果问题依旧存在,请将网卡驱动程序卸载重装,如果还是不能解决问题,更换一张网卡。
3.客户端提示“目前系统工作环境与软件运行环境相冲突,软件不能正常运行,CODE=2”的故障信息?
答:故障原因:安装了多块网卡,与客户端运行的环境不符合要求。
故障解决办法:卸载或者禁用多余网卡,只保留一张网卡运行。
4.客户端提示“目前系统工作环境与软件运行环境相冲突,软件不能正常运行CODE=4”的故障信息?
答:故障原因:由于安装了代理软件,与客户端运行的环境不符合要求。
故障解决办法:关闭或卸载代理服务器以及一切可能成为代理服务器的软件。
5.客户端认证失败,没有任何的错误提示信息?
答:故障原因:WINXP启用了系统自带的802.1X功能。
故障解决办法:双击网络连接图标,把属性里面的身份验证标签下“启用802.1X身份认证”前的勾去掉。
6.客户端提示认证失败,提示“已达到最大连接数”的故障?
答:故障原因:使用的帐号已在线,可能使用了别人的帐号,或者帐号输入错误。
故障解决办法:确认自己帐号正确性,如果确属自己帐号,则告知相关请有效证件,要求网络中心将其帐号下线。
7.客户端提示认证失败,提示“IP类型错误”的故障?
答:故障原因:认证服务器没有获得IP地址信息。
故障解决办法:在本地连接属性里面把IP获取方式改为自动获取,如果还是不能解决,请将网卡驱动程序卸载重装一次。
8.客户端提示认证失败,提示“XXXX绑定错误”的故障?
答:故障原因:非正常使用帐号;目前使用的网卡相关设置和教育技术办用户信息数据库里的相关绑定记录不一致。
故障解决方法:正确使用个人帐号,不要随意更改设置;带有效证件到网络中心做修改。
9.客户端提示认证失败,提示“网卡未连接上”的故障?
答:故障原因:网线连接不正确,交换机柜停电等。
故障解决方法:检查网线是否正常,确认机房交换机柜是否停电。
10.客户端提示认证失败,认证客户端停顿在:“寻找认证服务器。。。”的故障?
答:故障原因:可能网卡有问题,或者没有选择“使用私有组播地址认证”。
故障解决方法:检查网线是否正常;将速率改成10M,在实际运行中存在某些线路无法进行100M的数据交换;在认证客户端中设置“使用私有组播地址认证”;重装网卡驱动程序;如果问题依旧存在,更换一张网卡。如果在更换网卡之后出现“MAC地址绑定错误”,证明以前用的网卡质量不好,请使用新的网卡,并网络中心重新绑定。
11.客户端提示初始化网卡信息失败的故障?
答:故障原因:电脑有多个网卡信息。
故障解决方法:禁用掉无用的网卡,特别注意,很多笔记本电脑带无线网卡,一定要禁用掉!
12.客户端无法认证成功,提示“不在认证时段内”的故障?
答:故障原因:不在允许的时段内认证使用网络。
故障解决方法:请确认时间段是否为管理人员允许上网的时段。
13.客户端无法认证成功,提示“用户不存在或者密码错”的故障?
......>>
问题九:socket怎样使得多个客户端连接到一个服务器 在服务器端设置一个标志变量,如int flag = 0,当有客户端连接上了,就检查那个标志变量是否为0,如果是的话就连接,然后将这个标志设为1。如果为1的话就拒绝连接。我不知道你是用什么语言编写的,所以具体怎么去拒绝连接就自己多想想吧・・・
在java里面很容易实现,下面是我在java中实现的服务器端代码,希望对你有帮助。。。
package ob
import java.io.IOException
import java.ServerSocket
import java.Socket
public class Server {
Socket socket
boolean flag = true
public void createServer() {
try {
ServerSocket serverSocket = new ServerSocket(9090)
while (true) {
socket = serverSocket.accept()
if (flag) {
System.out.println(有用户连上・・・)
System.out.println(ip:+socket.getRemoteSocketAddress().toString()+ port:+socket.getPort())
flag = false
}else{
System.out.println(有用户连上・・・)
socket.close()
System.out.println(关闭用户连接・・・)
}
}
} catch (IOException e) {
e.printStackTrace()
}
}
public static void main(String[] args) {
new Server().createServer()
}
}
问题十:socket客户端如何连接服务器端 import java.*
import java.lang.*
import java.io.*
public class MySocketServer
{
public static void main(String args[]) throws IOException
{
try{
ServerSocket myServer = new ServerSocket(8018)
System.out.println(正在监听端口:+myServer.getLocalPort())
Socket myClient = null
boolean flag = true
String InputMessage = null
int c
while(flag)
{
myClient = myServer.accept()
接收客户端的信息,如果不是Stop就继续监听,加个if判断
DataInputStream dataIn = new DataInputStream(myClient.getInputStream())
DataInputStream dataIn = new DataInputStream(new BufferedInputStream(myClient.getInputStream()))
OutputStream dataOut = myClient.getOutputStream()
while( (InputMessage = dataIn.readLine()) != null )
{
if( InputMessage.equals(stop))
{
flag = false
break
}
else
{
System.out.println(从客户端接收到的信息是:+InputMessage)
输入:读取至 末尾-1结束,遇到回车'\n'结束:
while((c=System.in.read())!= -1)
{
dataOut.write((byte)c)
if( c== '\n')
{
dataOut.flush()
......>>
可以处理的,步骤为:1.客户端与服务器连(用Socket通讯)
2.客户端向处服务器发送SQL语句,如搜索一个表的数据
3.服务器接到请求,执行SQL语句返回一个DataTable
4.服务器将这个DataTable进行序列化、并且压缩
5.服务器将【序列化和压缩】后的byte[] msg数组传给客户端
6.客户端收到byte[] msg数组先进行解压缩、和反序列化为DataTable
7.再将DataTable通过DataSet和SqlDataAdapter.Update(Table)存在SQL中
下面我只给一些关键的代码,我有实现过的
第一步.客户端==》连接服务器并通讯,主要是发送SQL给服务器返回一个DataTable表
using System
using System.Collections.Generic
using System.ComponentModel
using System.Data
using System.Drawing
using System.Linq
using System.Text
using System.Windows.Forms
using System.Net
using System.Net.Sockets
using System.Xml
using System.Xml.Serialization
using System.IO
using System.IO.Compression
namespace Client
{
public partial class FormClient : Form
{
DataTable dt
public FormClient()
{
InitializeComponent()
}
private void ClientTest(string str)
{
Socket client
String returnData
byte[] buf = new byte[9991024]//此处可能有些问题
//IPAddress local = IPAddress.Parse("116.25.83.127")
IPAddress local = IPAddress.Parse("127.0.0.1")//可改为远程IP地址
IPEndPoint iep = new IPEndPoint(local, 6060)
try
{
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
client.Connect(iep)
}
catch (SocketException)
{
Console.WriteLine("无法连接到服务器!")
return
}
//输入exit,可以断开与服务器的连接
if (str == "")
{
return
}
//发送SQL语句给服务器
client.Send(Encoding.Unicode.GetBytes(str))
//得到实际收到的字节总数
Int32 rec = client.Receive(buf)
Console.WriteLine(Encoding.ASCII.GetString(buf, 0, rec))
//接收服务器返回的数据
returnData = System.Text.Encoding.Unicode.GetString(buf,0,rec)
//将returnData解压缩后,再反序列化转成DataTable dt = DeserializerDataTable(Decompress(returnData))
Console.WriteLine("断开与服务器的连接......")
client.Close()
dataGridView1.DataSource = dt
}
//将DataTable表反序列化
private DataTable DeserializerDataTable(string pXml)
{
StringReader strReader = new StringReader(pXml)
XmlReader xmlReader = XmlReader.Create(strReader)
XmlSerializer serializer = new XmlSerializer(typeof(DataTable))
DataTable dt = serializer.Deserialize(xmlReader) as DataTable
return dt}
//给服务器传SQL语句
private void buttonSearch_Click(object sender, EventArgs e)
{
string Sql = String.Format("Select top {0} * From Part Where CorpCode_='PT'", textBox1.Text.Trim())
ClientTest(Sql)
}
#region 压缩和解压缩
public string Compress(string str)
{
byte[] buffer = Encoding.Unicode.GetBytes(str)
MemoryStream ms = new MemoryStream()
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length)
}
ms.Position = 0
MemoryStream outStream = new MemoryStream()
byte[] compressed = new byte[ms.Length]
ms.Read(compressed, 0, compressed.Length)
byte[] gzBuffer = new byte[compressed.Length + 4]
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length)
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4)
return Convert.ToBase64String(gzBuffer)
}
//解压缩
public string Decompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText)
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0)
ms.Write(gzBuffer, 4, gzBuffer.Length - 4)
byte[] buffer = new byte[msgLength]
ms.Position = 0
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length)
}
return Encoding.Unicode.GetString(buffer)
}
}
#endregion
}
}
第二步.服务器收到SQL语句执行,并回传一个表给客户端
服务器接到请求,执行SQL语句返回一个DataTable
服务器将这个DataTable进行序列化、并且压缩
服务器将【序列化和压缩】后的byte[] msg数组传给客户端
using System
using System.Collections.Generic
using System.ComponentModel
using System.Data
using System.Drawing
using System.Linq
using System.Text
using System.Windows.Forms
using System.Net
using System.Net.Sockets//可以使用套接字
using System.Threading//可以使用多线程
using System.Data.SqlClient
using System.Xml
using System.Xml.Serialization
using System.IO
using System.IO.Compression
namespace AppServer
{
public partial class FormApp : Form
{
public FormApp()
{
InitializeComponent()
}
private void FormApp_Load(object sender, EventArgs e)
{
// AppService instance = new AppService()
}
private void buttonStartService_Click(object sender, EventArgs e)
{
AppService()
}
private Socket server
private Socket client
private void AppService()
{
/*
//本机IP
string name = Dns.GetHostName()
IPHostEntry host = Dns.GetHostByName(name)
IPAddress id= host.AddressList[0]
* */
//IPAddress local = IPAddress.Parse("192.168.0.100")
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 6060)
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
// 将套接字与本地终结点绑定
server.Bind(iep)
//在本地13000端口号上进行监听
server.Listen(10)
while (true)
{
// 得到包含客户端信息的套接字
client = server.Accept()
//创建消息服务线程对象ClientService方法委托给线程
Thread newthread = new Thread(new ThreadStart(ClientService))
// 启动消息服务线程
newthread.Start()
}
}
private Int32 i
private void ClientService()
{
Socket s = client
String data = null
String returnData = null
byte[] bytes = new byte[1024]
while ((i = s.Receive(bytes)) != 0)
{
//接收客户端的SQL
data = System.Text.Encoding.Unicode.GetString(bytes, 0, i)
//将接到的String 执行SQL返回表
DBAccess obj = new DBAccess()//专门传给SQL的类相当于DBHELP
DataTable dt = obj.FillData(data, "TEST", 1)//执行SQL返回表
//将返回的表转为String,并将returnData压缩
returnData = obj.Compress(obj.SerializeDataTableXml(dt))
byte[] msg = System.Text.Encoding.Unicode.GetBytes(returnData)
// 发送数据表给客户端 s.Send(msg)
if ((i = s.Receive(bytes)) == 0)
continue
}
//关闭套接字
s.Close()
}
}
//DBAccess的部份代码
class DBAccess
{
#region DataTable序列化与反序列化
public string SerializeDataTableXml(DataTable dt)
{
StringBuilder sb = new StringBuilder()
XmlWriter writer = XmlWriter.Create(sb)
XmlSerializer serializer = new XmlSerializer(typeof(DataTable))
serializer.Serialize(writer, dt)
writer.Close()
return sb.ToString()}
public DataTable DeserializerDataTable(string pXml)
{
StringReader strReader = new StringReader(pXml)
XmlReader xmlReader = XmlReader.Create(strReader)
XmlSerializer serializer = new XmlSerializer(typeof(DataTable))
DataTable dt = serializer.Deserialize(xmlReader) as DataTable
return dt}
#endregion
#region 压缩和解压缩
public string Compress(string str)
{
byte[] buffer = Encoding.Unicode.GetBytes(str)
MemoryStream ms = new MemoryStream()
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length)
}
ms.Position = 0
MemoryStream outStream = new MemoryStream()
byte[] compressed = new byte[ms.Length]
ms.Read(compressed, 0, compressed.Length)
byte[] gzBuffer = new byte[compressed.Length + 4]
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length)
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4)
return Convert.ToBase64String(gzBuffer)
}
public string Decompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText)
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0)
ms.Write(gzBuffer, 4, gzBuffer.Length - 4)
byte[] buffer = new byte[msgLength]
ms.Position = 0
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length)
}
return Encoding.Unicode.GetString(buffer)
}
}
#endregion
}
第三步.调用DataSet和SqlDataAdapter.Update(Table)存在SQL中,这个是传入一个DataGridView ,可在客户端中使用保存(部份代码,没有连接SQL数据库的)
#region 公共保存DataGridView
public bool DataGridViewSave(DataTable table,string tableName,string CorpCode)
{
string Sql = String.Format("Select Top 0 * From {0} Where CorpCode_='{1}' ", tableName, CorpCode)
SqlDataAdapter sda = new SqlDataAdapter(this.CreateCommand(Sql, null, 1))
SqlCommandBuilder scb = new SqlCommandBuilder(sda)
sda.Update(table)
this.Close()
return true
}
#endregion
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)