以前写的,照贴了。。。服务器端:import java.awt.*\x0d\x0aimport java.awt.event.WindowAdapter\x0d\x0aimport java.awt.event.WindowEvent\x0d\x0aimport java.io.*\x0d\x0aimport java.net.*/*6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和
客户端程序两部分。\x0d\x0a* 客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。\x0d\x0a* (20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)*/\x0d\x0apublic class N4BT6 extends Frame\x0d\x0a{\x0d\x0aDatagramSocket socket \x0d\x0aDatagramPacket packet byte[] buf \x0d\x0aFile file \x0d\x0aFileInputStream input\x0d\x0aString message = "该文件不存在"\x0d\x0aTextArea text\x0d\x0apublic N4BT6(String title)\x0d\x0a{\x0d\x0asuper(title)\x0d\x0atext = new TextArea(6,4)\x0d\x0aadd(text)\x0d\x0asetSize(400, 300)\x0d\x0asetVisible(true)\x0d\x0aaddWindowListener(new WindowAdapter()\x0d\x0a{\x0d\x0apublic void windowClosing(WindowEvent e)\x0d\x0a{\x0d\x0adispose()\x0d\x0a}\x0d\x0a})\x0d\x0a\x0d\x0abuf = new byte[1024]\x0d\x0atry\x0d\x0a{\x0d\x0asocket = new DatagramSocket(1230)\x0d\x0apacket = new DatagramPacket(buf, buf.length)\x0d\x0asocket.receive(packet)\x0d\x0afile = new File(new String(packet.getData()))\x0d\x0asocket = new DatagramSocket()\x0d\x0a} \x0d\x0acatch (Exception e)\x0d\x0a{e.printStackTrace()\x0d\x0a}\x0d\x0a\x0d\x0aif(file.exists())\x0d\x0a{\x0d\x0atry\x0d\x0a{\x0d\x0abuf = new byte[(int)file.length()]\x0d\x0apacket = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234)\x0d\x0ainput = new FileInputStream(file)\x0d\x0ainput.read(buf)\x0d\x0asocket.send(packet)\x0d\x0a}\x0d\x0acatch (IOException e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0aelse\x0d\x0a{\x0d\x0atry\x0d\x0a{\x0d\x0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,\x0d\x0aInetAddress.getLocalHost(),1234)\x0d\x0asocket.send(packet)\x0d\x0a}\x0d\x0acatch (Exception e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a}\x0d\x0apublic static void main(String[] args)\x0d\x0a{\x0d\x0anew N4BT6("Server")\x0d\x0a}\x0d\x0a}\x0d\x0a客户端:import java.awt.*\x0d\x0aimport java.awt.event.*\x0d\x0aimport java.net.DatagramPacket\x0d\x0aimport java.net.DatagramSocket\x0d\x0aimport java.net.InetAddresspublic class N4BT6_2 extends Frame\x0d\x0a{\x0d\x0aTextArea text\x0d\x0aString message = "Q.txt"\x0d\x0aDatagramSocket socket \x0d\x0aDatagramPacket packet\x0d\x0abyte[] buf\x0d\x0apublic N4BT6_2(String title)\x0d\x0a{\x0d\x0asuper(title)\x0d\x0atext = new TextArea(6,4)\x0d\x0aadd(text)\x0d\x0asetSize(400, 300)\x0d\x0asetVisible(true)\x0d\x0aaddWindowListener(new WindowAdapter()\x0d\x0a{\x0d\x0apublic void windowClosing(WindowEvent e)\x0d\x0a{\x0d\x0adispose()\x0d\x0a}\x0d\x0a})\x0d\x0atry\x0d\x0a{\x0d\x0a\x0d\x0asocket = new DatagramSocket()\x0d\x0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,\x0d\x0aInetAddress.getLocalHost(),1230)\x0d\x0asocket.send(packet)\x0d\x0a}\x0d\x0acatch (Exception e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a\x0d\x0atry\x0d\x0a{\x0d\x0abuf = new byte[1024]\x0d\x0asocket = new DatagramSocket(1234)\x0d\x0apacket = new DatagramPacket(buf,buf.length)\x0d\x0asocket.receive(packet)\x0d\x0atext.append(new String(buf))\x0d\x0a}\x0d\x0acatch (Exception e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0apublic static void main(String[] args)\x0d\x0a{\x0d\x0anew N4BT6_2("Client")\x0d\x0a}\x0d\x0a}
引言、即时通讯是网上最为流行的通讯方式,市场上也出现了各种各样的即时通讯软件。这篇文章将会给大家介绍一些开发即时通讯软件的网络编程方式。
一、什么是即时通讯。
即时通讯就是可以随时随地发送和接收信息,简单来说,即时通讯就是聊天工具。生活中常见的即时通讯工具有微信、QQ等。
二、即时通讯软件开发的网络编程方式都有哪些?
开发即时通讯软件需要用到安卓端技术java语言,苹果端oc语言,电脑端win系统桌面C/C++语言,管理后台数据库语言,后台管理界面java或者php。建议可以使用第三方SDK,可以有效地避免消息漏发,卡顿,数据并发等很多问题,提高了用户对产品的体验感。
三、如何设置编程。
mysql数据库的用户名为root,密码为空,可以根据自己的需要设置相应的用户名和密码(固定在程序中)。mychatserver是聊天服务器,myfileserver是文件服务器,文件服务器负责上传和下载聊天中发送的文件,myimgserver负责上传和下载聊天中的图片。三个服务之间相互独立,不会互相影响。聊天服务器监听端口是20000,文件服务器端口是20001,图片服务器端口号是20002,这三个端口的客户端连接,其中聊天端口和客户端是长连接,文件端口和图片可选择长连接或短连接。第一次运行mychatserver时,如果能顺利连上mysql,mychatserver会自动检测是否存在名为myim的数据库,如果不存在就可以创建了,并新建三张信息表,分别是用户信息表,好友关系表和聊天消息记录表。第一次启动文件服务器时会创建filecache目录,这个目录用来存储聊天中的聊天图片和离线文件以及客户端的升级包。为了方便查看代码,可以用Visual Studio管理代码,使用VS打开myserver.sln查看和管理代码。
1、要实现网络编程,首先得了解网络编程的原理。
大部分网络编程底层都是通过TCP/IP或者UDP协议进行通讯,不管是TCP还是UDP通讯,都是通过调用socket实现的。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket通讯分为两部分:服务器端和客户端,服务器端监听客户端的连接,连接上之后,实现数据通讯,流程
2、用C语言调用Socket实现通讯
服务器端示例代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#definePORT1500//端口号
#defineBACKLOG5/*最大监听数*/
intmain(){
intsockfd,new_fd/*socket句柄和建立连接后的句柄*/
structsockaddr_inmy_addr/*本方地址信息结构体,下面有具体的属性赋值*/
structsockaddr_intheir_addr/*对方地址信息*/
intsin_size
sockfd=socket(AF_INET,SOCK_STREAM,0)//建立socket
if(sockfd==-1){
printf(\"socketfailed:%d
评论列表(0条)