一个路由器分出来的两台电脑怎么实现客户端和服务器的通信
1一楼bibofun同学说的很对,内网的计算机可以直接通信。
2这两台电脑中的一台,您或许需要用作服务器使用,那么最好设置为一个固定的内网IP,比如1921680200,如果服务器需要访问外网,那么网关也是要设置的,还有DNS也需要设置,否则,仅需要设置IP即可。
3客户端是另一台电脑了,如果内网可以自动获得IP,那就不需要设置这台电脑的IP。
4查看ip地址是非常必要的,通过"开始"->"运行"->"CMD"->"ipconfig",分别在服务器与客户端上查看ip,务必需要二者的IP均在一个段中,两者才可通信。
5当然是测试是否连通,ping对方的ip地址就可以判断。比如,客户端ping服务器,在命令窗口输入:ping 1921680200
以前写的,照贴了。。。服务器端:import javaawt;\x0d\import javaawteventWindowAdapter;\x0d\import javaawteventWindowEvent;\x0d\import javaio;\x0d\import javanet;/6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。\x0d\ 客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。\x0d\ (20分)(服务端程序和客户端程序分别命名为Serverjava和Clientjava)/\x0d\public class N4BT6 extends Frame\x0d\{\x0d\DatagramSocket socket ;\x0d\DatagramPacket packet ;byte[] buf ;\x0d\File file ;\x0d\FileInputStream input;\x0d\String message = "该文件不存在";\x0d\TextArea text;\x0d\public N4BT6(String title)\x0d\{\x0d\super(title);\x0d\text = new TextArea(6,4);\x0d\add(text);\x0d\setSize(400, 300);\x0d\setVisible(true);\x0d\addWindowListener(new WindowAdapter()\x0d\{\x0d\public void windowClosing(WindowEvent e)\x0d\{\x0d\dispose();\x0d\}\x0d\});\x0d\\x0d\buf = new byte[1024];\x0d\try\x0d\{\x0d\socket = new DatagramSocket(1230);\x0d\packet = new DatagramPacket(buf, buflength);\x0d\socketreceive(packet);\x0d\file = new File(new String(packetgetData()));\x0d\socket = new DatagramSocket();\x0d\} \x0d\catch (Exception e)\x0d\{eprintStackTrace();\x0d\}\x0d\\x0d\if(fileexists())\x0d\{\x0d\try\x0d\{\x0d\buf = new byte[(int)filelength()];\x0d\packet = new DatagramPacket(buf,buflength,InetAddressgetLocalHost(),1234);\x0d\input = new FileInputStream(file);\x0d\inputread(buf);\x0d\socketsend(packet);\x0d\}\x0d\catch (IOException e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\else\x0d\{\x0d\try\x0d\{\x0d\packet = new DatagramPacket(messagegetBytes(),messagegetBytes()length,\x0d\InetAddressgetLocalHost(),1234);\x0d\socketsend(packet);\x0d\}\x0d\catch (Exception e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\\x0d\}\x0d\public static void main(String[] args)\x0d\{\x0d\new N4BT6("Server");\x0d\}\x0d\}\x0d\客户端:import javaawt;\x0d\import javaawtevent;\x0d\import javanetDatagramPacket;\x0d\import javanetDatagramSocket;\x0d\import javanetInetAddress;public class N4BT6_2 extends Frame\x0d\{\x0d\TextArea text;\x0d\String message = "Qtxt";\x0d\DatagramSocket socket ;\x0d\DatagramPacket packet;\x0d\byte[] buf;\x0d\public N4BT6_2(String title)\x0d\{\x0d\super(title);\x0d\text = new TextArea(6,4);\x0d\add(text);\x0d\setSize(400, 300);\x0d\setVisible(true);\x0d\addWindowListener(new WindowAdapter()\x0d\{\x0d\public void windowClosing(WindowEvent e)\x0d\{\x0d\dispose();\x0d\}\x0d\});\x0d\try\x0d\{\x0d\\x0d\socket = new DatagramSocket();\x0d\packet = new DatagramPacket(messagegetBytes(),messagegetBytes()length,\x0d\InetAddressgetLocalHost(),1230);\x0d\socketsend(packet);\x0d\}\x0d\catch (Exception e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\\x0d\try\x0d\{\x0d\buf = new byte[1024];\x0d\socket = new DatagramSocket(1234);\x0d\packet = new DatagramPacket(buf,buflength);\x0d\socketreceive(packet);\x0d\textappend(new String(buf));\x0d\}\x0d\catch (Exception e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\public static void main(String[] args)\x0d\{\x0d\new N4BT6_2("Client");\x0d\}\x0d\}
这个很简单,普通的数据库操作就可以,只不过连接的时候设置连接的IP
数据库安装在服务器上,假定IP为1110102
客户端和服务器端程序全部使用 server=1110102;uid=sa;pwd=;database=数据库名;这样的连接字符串进行连接数据库操作。
这样不管是客户端还是服务器端,操作的都是同一个数据库,只不过是操作界面不同而已(就是权限)。
C/S模式和B/S各有其有点也各有其缺点,B/S模式在开发中需要考虑数据如何从客户端提交到服务器端,数据又如何返回到客户端,这些是B/S模式所特有的,在去年之前,开发B/S模式的程序,我都是利用form来交互数据,当我看到XML之后,发现XML是个好冬冬,有很多优点,有好的东西当然不能独享啦,想当年为了实现XML交互数据,几乎把网络翻了个遍。咚,一块砖头上来了。呵呵,废话少说,下面我们就进入正题。
B/S模式分为服务器端和客户端,客户端接受用户的请求,客户端向应用服务提出请求,应用服务从数据库服务中获得数据,应用服务将数据进行计算并将结果提交给客户端,客户端将结果呈现给用户。这样,我们就看到了数据从客户到服务器,经过服务器的处理再返回到客户端,由客户端软件(如IE)显示结果。
(以ASP教本语言为例,其它的语言一样哈。)
1.Form方式
Form方式是最基本的向服务器提交数据的方式。
testasp文件代码:
<%@ Language=VBScript %>
<%
ResponseExpires=-1
ResponseCharSet="UTF-8"
SessionCodePage="65001"
%>
<form name="frmTest" id="frmTest" action="testasp" method="POST">
<input name="name" id=" name" type="text" value="">
<input type="hidden" name="number" id="number" value="10">
<input type="submit" value="Submit" name="B1">
</form>
<%
dim intnumber
dim strname
if IsEmpty(Request("name")) then
strname =""
else
strname =Request("name")
end if
if IsEmpty(Request("number")) then
intnumber =0
else
intnumber =Request("number")
end if
为实现数据共享、数据更新的便利,系统采用了客户端/服务器端模型,服务器端具有修改数据的权限,客户端只能浏览查看数据,这样也能保证数据的安全性。
由于 MapX 本来只作为单机版的控件,并未提供读取网络空间数据的能力,所以客户端/服务器端模型必须纯粹通过 VB 来实现。
图 5 3 文本链接文件和视频链接文件的显示
图 5 4 链接文件的显示
客户端/服务器端模型在矿山内部局域网内运行,所以必须保证局域网的畅通,各计算机能相互访问。客户端的数据有版本日期标志,客户端提供了更新数据的操作接口,当服务器端的数据更新后,客户端将从服务器端下载最新数据,覆盖掉本地的数据,同时更新数据的版本标志。具体实现如下。
在服务器端先要运行批处理命令:
net share map $ = App path & " \ map" / unlimited / remark: " 矿山安全管理信息系统" 。
然后在 VB 中编码,具体关键代码如下:
Kill APPPATH & " \ map" & File1 List( i)
FileCopy " \ \ " & ServerName & " \ map $ \ " & File1 List( i) ,APPPATH & " \ tempmap \ "& File1 List( i)
ProgressBar1 value = ProgressBar1 value + 1
DoEvents’释放 CPU,防止程序不响应
由于网络病毒的泛滥,很多计算机都安装了防火墙软件。防火墙软件在阻止外界入侵的同时,也关闭了很多系统的网络服务。如果防火墙软件关闭了系统的默认共享服务,则系统将出现找不到服务器的错误。这时系统将采用第二种方案来传输数据,具体函数如下:
煤矿安全地理信息系统设计与开发
你先要了解一下网络协议。你这说的是传输层的协议,TCP和UDP都是固定端口的。网络分成好多层的,每层的端口都不一样,每一层将会把低一层的数据封装打包,这个就是所谓的协议,不同功能的软件和硬件处理自己这层的端口和数据,然后再传递给上层。每一层协议不相关,也不需要知道和理解传来的是什么,只负责自己的规则就好,传过来的都当成数据处理打包。RTSP是应用层的协议,在TCP和UDP之上层,可以自定义端口,一般是554。系统自己会处理TCP和UDP数据,socket都已经实现好了,然后再将RTSP的协议数据通过端口554给你客户端。所以你不用太关心TCP和UDP层的东西,如果你发烧无聊,也可以自己实现TCP和UDP协议,抓取数据,得到RTSP的数据包,就是RTSP协议层部分了。获取到RTSP的协议部分,通过RTSP的协议,分析出命令和数据部分,这个就是基本解析过程。
0条评论