java基礎十一 Socket

2021-09-23 17:02:17 字數 2744 閱讀 1374

一、udp:無連線通訊。

特點:1.傳輸效率高

2.安全性低,不保證可到的資料傳輸。

開發流程:

傳送端(客戶端):

1.建立udp服務  

datagramsocket ds=new datagramsocket()

2.封裝資料報(datagrampacket )

byte buff="udp test" .getbytes();

datagrampacket dp=new datagrampacket (buf,buf.length,inetaddress.getbyname("192.168.1.22"),10000);

3.傳送資料:

ds.send(dp);

4.關閉資源  close

ds.close()

接收端(服務端):

1.定義udp服務

datagramsocket ds=new datagramsocket(10000)

2.定義資料報接收資料 

byte buff=new byte[1024] ;

datagrampacket dp=new datagrampacket (buf,buf.length);

3.通過udp服務接收資料報 receive

ds.receive(dp);

4.取出資料

string ip=dp.getaddress().gethostaddress();

int len=dp.getlength();

string data=new string(dp.getdata(),len);

5.關閉資源close

ds.close();

服務端:

public class udpserver extends  thread 

public void run()

string tag="udptest_server";

public void recive(handler handler)

//------------------------------

} catch (socketexception e) catch (ioexception e) finally

}}

客戶端**:

public class udpclient extends  thread

public void run()

public void senddata(handler handler) catch (socketexception e) catch (unknownhostexception e) catch (ioexception e) finally }}

}

二、tcp:面向連線的通訊。

特點:1.傳輸效率低

2.安全性高 

開發流程:

客戶端:

1.建立socket服務,指定ip和埠

socket socket=new socket("192.168.1.12",10001);

2.傳送資料,獲取socket輸出流

outputstream out=socket.getoutputstream();

out.write("tcp測試".getbytes());

3.關閉socket

s.close();

服務端:

1.建立服務端的socket服務,監聽埠

serversocket  ss=new serversocket(10001);

2.通過accept方法獲取連線過來的客戶端物件

socket s=ss.accept();//會阻塞

3.獲取客戶端發過來的資料

inputstream in=s.getinputstream();

byte buf=new byte[1024];

int len=in.read(buf);//read 會阻塞

string data=new string(buff,0,len);

4.關閉資源

服務端**:

public class tcpserver extends thread 

public void run()

public void recive(handler handler)

}} catch (ioexception e) finally catch (ioexception e) }}

}private byte getdata(inputstream in) catch (ioexception e)

return null;

}private void showmsg(string strmsg)

}

客戶端**:

public class tcpclient extends thread

public void run()

public void send() catch (ioexception e) finally catch (ioexception e) }}

public void showmsg(string data)

}

java基礎筆記(十一)

public class udpreceiver 4.關閉資源 public class udpsender 4.關閉資源 tcp客戶端 1.建立socket物件,傳入伺服器的ip和埠 2.通過socket物件獲取輸出流,呼叫write方法寫資料到伺服器 3.通過socket物件獲取輸入流,呼叫re...

socket程式設計(十一)

void handler int sig signal sigalrm,handler alarm 5 int ret read fd,buf,sizeof buf if ret 1 errno eintr else if ret 0 else if ret 0 while ret 0 errno ...

socket程式設計基礎

對於socket在這裡我不想究其歷史,我只想說其時它是一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些api函式就能實現分布在不同主機的相關程序之間的資料交換.socket中首先我們要理解如下幾個定義概念 二是埠號 用來標識本地通訊程序,方便os提交資料.就是說程序指定了對方程序的網路ip,但這個...