我想问下如何在手机上建立一个服务器,用Socket的方法如何实现。
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);
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条评论