如何用安卓手机建立个ftp服务器?
打开一图的管理器,点击管理器上三。(ftp基于局域网,因此手机pc连接一个名字网络)
点击远程管理了去,点击右上角螺母了去。
点击设置密码这里,账号密码尽量简单。
例如全部设置为a,点击确定,然后点击打开。
此时看到ftp开头的服务器地址,点击电脑开始。
点击计算机,计算机栏输入地址,输入密码,那么就可以管理手机上的文件了。
TCP方式:
TCP协议客户端实现:
//创建一个Socket对象,指定服务器端的IP地址和端口号
Socketsocket=newSocket("1921681104",4567);
//使用InputStream读取硬盘上的文件,这里只是用文件当做信息源,可以读取控件用户输入信息
InputStreaminputStream=new
FileInputStream("f://file/wordstxt");
//从Socket当中得到OutputStream
OutputStream outputStream=socketgetOutputStream();
bytebuffer[]=newbyte[41024];inttemp=0;
//将InputStream当中的数据取出,并写入到OutputStream当中
while((temp=inputStreamread(buffer))!=-1)
5
{
outputStreamwrite(buffer,0,temp);}
outputStreamflush();}
TCP协议服务器端实现:
//声明一个ServerSocket对象
ServerSocketserverSocket=null;
try{
//创建一个ServerSocket对象,并让这个Socket在4567端口监听
serverSocket=newServerSocket(4567);
//调用ServerSocket的accept()方法,接受客户端所发送的请求,
//如果客户端没有发送数据,那么该线程就停滞不继续
Socketsocket=serverSocketaccept();
//从Socket当中得到InputStream对象
InputStreaminputStream=socketgetInputStream();
bytebuffer[]=newbyte[10244];
inttemp=0;
//从InputStream当中读取客户端所发送的数据
while((temp=inputStreamread(buffer))!=-1)
{
Systemoutprintln(newString(buffer,0,temp));}
}
catch(IOExceptione)
{
eprintStackTrace();}
serverSocketclose();
}
UDP方式
UDP的客户端代码实现如下:
public static void main(String[]args)
{
try{
//首先创建一个DatagramSocket对象
DatagramSocket socket=new DatagramSocket(4567);
//创建一个InetAddree
6
InetAddress serverAddress=InetAddressgetByName("1921681104");
String str="hello";
//这是要传输的数据
byte data[]=strgetBytes();
//把传输内容分解成字节
//创建一个DatagramPacket对象,并指定要讲这个数据包发送到网
络当中的哪个地址,以及端口号
DatagramPacket packet=new
DatagramPacket(data,datalength,serverAddress,4567);
//调用socket对象的send方法,发送数据
socketsend(packet);}
catch(Exceptione)
{
eprintStackTrace();}
}
UDP的服务端代码实现如下:
//创建一个DatagramSocket对象,并指定监听的端口号
DatagramSocket socket=new DatagramSocket(4567);
bytedata[]=newbyte[1024];
//创建一个空的DatagramPacket对象
DatagramPacket packet=new DatagramPacket(data,datalength);
//使用receive方法接收客户端所发送的数据,
//如果客户端没有发送数据,该进程就停滞在这里
socketreceive(packet);
Stringresult=newString(packetgetData(),packetgetOffset(),
packetgetLength());
Systemoutprintln("result--->"+result);
1、架设服务器,首先在设置映射的路由器中查看公网IP地址!之前已经说过,在运行状态中查看你宽带连接拨号所获得的公网IP地址!
2、把上面的地址复制到与小伙伴聊天的窗口中,发给需要登陆我的世界服务器的小伙伴们!
3、接下载,如果你的小伙伴没有下载《我的世界》,那么赶快去下载吧!
注意!下载的《我的世界》的版本需要和你安装的“craftbukkit”版本一样!比如你安装的是105版本的“craftbukkit”那么就叫对放下载对应版本的我的世界
4、对方下载后,同样也需要安装对应的JAVA哦!是64位系统就安装64位的JAVA,是32位的就安装32位的系统!
5、下载好我的世界和安装好java后!叫小伙伴们运行启动器吧!
6、选择和服务器一致的版本,然后点击“启动”。
7、程序载入成功后,点击单人游戏下面的“多人游戏”
8、在多人游戏里面,点击“添加服务器”
9、服务器名称不需要管它,可以更改也可以不更改
服务器的IP地址就是之前发给小伙伴的那个IP地址
然后点击“完成”
10、如果出现图中的那个信号格!表示查询到了该服务器,如果是一个红色的X,那么请检查你端口映射的是什么!是否更改成《我的世界》默认的端口25565。或者你更改配置文件后没有重启!重启后需要再去运行startbat文件!
11、我最后叫我的小伙伴点击查询到的那台服务器,然后再点击“加入服务器”,然后就成功登陆啦!
最后!祝你成功!如果有哪儿不明白的可以私信我,我有时间会一一解答!
记得给我采纳,点赞哟!谢谢
更多游戏内容请关注果盘游戏我的世界专区
你有两种方法,一种是租用VPS,然后用socket编程,这个我觉得比较适合你。所谓的vps和一般提供网站服务的虚拟主机不同,而更像一台完整的(虚拟)的电脑,和你运行在自己机器上一样的程序在上面跑。这种情况下,使用裸的TCP或UDP协议与主机通讯。
另外一种就是提供网站服务的虚拟主机,ASP比较过时了,要么用ASPNET(若你习惯微软的环境),要么还是用php吧。后者的主机比较容易找一般也相对便宜。你熟悉Java的话,JSP也可以。这种情况下,通讯使用HTTP协议,你在手机上使用HTTP的API和服务器通讯。HTTP协议是上层应用协议,相当于在TCP上包了一层。
数据库的话,后面一种提供网站服务的一般都带,你和服务提供商确认就可以了。前一种的话,因为从使用角度看上去完全是一台完整的电脑,你可以自己装任意的数据库,也没什么新鲜的了。
压缩的话,后一种提供网站服务的,根据你具体选择的技术方案,有的Web中间件(比如IIS)是带GZip一类的功能的;手机上的HTTP库能不能支持就不一定了,像Android之类应该是没问题的。前一种VPS你自己可以找个zip库压缩,也可以随便抄个简单的压缩算法。
多说两句的是,你虽然没有web经验,但不要被那些讲解Web技术的文章影响你的编程方案选择。Web编程这一块本来是简单直接的,但趴在Web技术上的所谓工程师很多,他们中间一些闲工夫多的就琢磨出很多花活儿来;显得好像Web技术也很高深似的。
整个圈子不是搞脱了裤子放屁的编程框架的伪大神,就是被这些大神忽悠的自以为自己真会点儿什么的菜鸟。当然简单的东西往复杂了做也有益处,看看那些互联网公司连个指针都操作不了的所谓“程序员”的工资就知道了。
就你的需求,或者选用自己最擅长的、或者如果基于HTTP协议的话选择最简单的方案来做。
package orgzhangkaipostdata;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javanetHttpURLConnection;
import javanetMalformedURLException;
import javanetServerSocket;
import javanetSocket;
import javanetURL;
import javanetUnknownHostException;
import orgapachehttpprotocolHTTP;
import androidappActivity;
import androidosBundle;
import androidutilLog;
import androidviewView;
import androidwidgetButton;
public class postActivity extends Activity implementsRunnable{
Button btn ;
final String SERVER = "127001";
final int PORT = 1560;//在手机内部,端口号可以随便用,除了有固定用途的端口,比如80
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
btn = (Button)thisfindViewById(Ridsend);
btnsetOnClickListener(new ButtonOnClickListener(){
public void onClick(View v) {
try {
Socket socket = new Socket (SERVER,PORT);
OutputStream mOutput = socketgetOutputStream();
mOutputwrite("test"getBytes());
mOutputclose();
} catch (UnknownHostException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
}
}
});
new Thread (this)start();
}
public void run() {
try {
ServerSocket server = new ServerSocket (PORT);
Systemoutprintln("start accept");
Socket socket = serveraccept();
InputStream mInput = socketgetInputStream();
byte[] data = new byte[1400];
int length = mInputread(data);
Systemoutprintln("data:"+new String (data,0,length));
} catch (IOException e) {
eprintStackTrace();
}
}
}
0条评论