µ±Ç°Î»ÖãºÊ×Ò³ > µÚ10ÕÂ ÍøÂç±à³Ì_²¹³ä°¸Àý
°¸Àý10-4 TCPÍøÂç³ÌÐò
Ò»¡¢°¸ÀýÃèÊö
1¡¢ ¿¼ºË֪ʶµã
±àºÅ£º00110008/00110009
Ãû³Æ£ºServerSocketÀà/SocketÀà
2¡¢ Á·Ï°Ä¿±ê
? ͨ¹ý±àд¼òµ¥µÄTCP³ÌÐò£¬ÕÆÎÕServerSocket¡¢SocketÀàµÄ¾ßÌåÓ÷¨¡£
3¡¢ ÐèÇó·ÖÎö
ServerSocketÓÃÓÚ¸ºÔð¼àÌýij̨¼ÆËã»úµÄij¸ö¶Ë¿ÚºÅ½ÓÊÕÀ´×Ô¿Í»§¶ËµÄÇëÇó£¬ÊÇÍøÂç³ÌÐòÖеķþÎñÆ÷¶Ë£¬SocketÓÃÓÚ¸ù¾ÝÖ¸¶¨µÄIPµØÖ·ºÍ¶Ë¿ÚºÅÏòServerSocket¶Ë½»»¥£¬ÊÇÍøÂç³ÌÐòÖеĿͻ§¶Ë¡£ÎªÁËÈóõѧÕßÕÆÎÕÕâÁ½¸öÀàµÄ×÷Ó㬱¾°¸Àý½«Í¨¹ýServerSocketÀàºÍSocketÀàʵÏÖ¼òµ¥µÄÊý¾ÝͨÐÅ£¬²¢Í¨¹ý¹Û²ìÁ½¸öÃüÁîÐд°¿ÚÖÐÊý¾ÝÊä³öµÄÏȺó˳Ðò£¬´Ó¶øÔö¼Ó¶ÔTCPÍøÂç³ÌÐòÖпͻ§¶ËºÍ·þÎñ¶ËµÄÖ´ÐÐÔÀí¡£
4¡¢ Éè¼ÆË¼Â·£¨ÊµÏÖÔÀí£©
1) ±àд·þÎñÆ÷¶ËÀàServerDemo£¬ÔÚServerDemoÀàÖд´½¨·þÎñÆ÷¶ËServerSocket¶ÔÏ󣬲¢ÒÀ´Î
±àд¼àÌýÁ¬½Ó¡¢»ñÈ¡ÊäÈëÁ÷£¬´òÓ¡¶ÁÈ¡Êý¾Ý£¬ÊÍ·Å×ÊÔ´µÈ²Ù×÷¡£
2) ±àд¿Í»§¶ËÀàClientDemo£¬ÔÚClientDemoÀàÖд´½¨¿Í»§¶ËSocket¶ÔÏ󣬲¢·Ö±ð±àд½¨Á¢Á¬
½Ó¡¢»ñÈ¡Êä³öÁ÷£¬ÊÍ·Å×ÊÔ´µÈ²½Öè¡£
3) ÒÀ´ÎÖ´ÐÐServerDemoºÍClientDemoÀ࣬¹Û²ìÃüÁîÐÐÊä³ö±ä»¯¡£
¶þ¡¢°¸ÀýʵÏÖ
TCPÍøÂç³ÌÐòÖзþÎñ¶Ë£¬´úÂëÈçÏ£º
import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
// »ñÈ¡ÊäÈëÁ÷£¬¶ÁÈ¡Êý¾Ý£¬²¢ÏÔʾ
InputStream is = s.getInputStream(); byte[] bys = new byte[1024]; int len = is.read(bys);//×èÈû // ´´½¨·þÎñÆ÷¶ËSocket¶ÔÏó
ServerSocket ss = new ServerSocket(10010);
System.out.println(\·þÎñ¶ËÒÑ¿ªÆô£¬µÈ´ý¿Í»§¶Ë·¢ËÍÊý¾Ý¡£\// ¼àÌýÁ¬½Ó
Socket s = ss.accept();//×èÈû
}
String client = new String(bys, 0, len); System.out.println(client);
}
// ÊÍ·Å×ÊÔ´
System.out.println(\ÒѽÓÊÕ¿Í»§¶Ë·¢Ë͵ÄÊý¾Ý£¬·þÎñ¶Ë¹Ø±Õ¡£\s.close();
TCPÍøÂç³ÌÐòÖпͻ§¶Ë£¬´úÂëÈçÏ£º
import java.io.IOException; import java.io.OutputStream; import java.net.Socket;
public class ClientDemo { }
}
// ÊÍ·Å×ÊÔ´
System.out.println(\·¢ËÍÍê±Ï£¬¹Ø±Õ¿Í»§¶Ë·þÎñ¡£\s.close();
// »ñÈ¡Êä³öÁ÷£¬Ð´Êý¾Ý¼´¿É
OutputStream os = s.getOutputStream(); os.write(\ÎÒÀ´ÁË\
public static void main(String[] args) throws IOException {
// ´´½¨¿Í»§¶ËµÄSocket¶ÔÏó,½¨Á¢Á¬½Ó
Socket s = new Socket(\System.out.println(\¿Í»§¶ËÒÑ´ò¿ª£¬µÈ´ý·¢ËÍÊý¾Ý¡£\
Ê×ÏÈ¿ªÆô·þÎñ¶Ë³ÌÐò£¬ÔËÐнá¹ûÈçͼ10-8Ëùʾ¡£
ͼ10-8 ÔËÐнá¹û
È»ºó¿ªÆô¿Í»§¶Ë³ÌÐò£¬ÔËÐнá¹ûÈçͼ10-9Ëùʾ¡£
ͼ10-9 ÔËÐнá¹û
´Ëʱ£¬ÔÙ¹Û²ì·þÎñ¶Ë¿ØÖÆÌ¨µÄÊä³ö£¬ÔËÐнá¹ûÈçͼ10-10Ëùʾ¡£
ͼ10-10 ÔËÐнá¹û
Èý¡¢°¸Àý×ܽá
1¡¢ÔÚʹÓÃTCPÐÒé±àÐ´ÍøÂç³ÌÐòʱ£¬·þÎñ¶ËºÍ¿Í»§¶ËµÄ¶Ë¿ÚºÅ±ØÐë±£³ÖÒ»Ö£¬·ñÔò»á³öÏÖÏÂÁдíÎó¡£
ͼ10-11
2¡¢Í¨¹ýѧϰUDPÍøÂç³ÌÐòºÍTCPÍøÂç³ÌÐò£¬»á·¢ÏÖÁËËûÃǶ¼ÄÜʵÏÖÊý¾ÝµÄ½»»¥£¬ÄÇôËûÃÇÓÐÊ²Ã´Çø±ðÄØ£¿
UDPºÍTCPÐÒéµÄÖ÷񻂿±ðÊÇÁ½ÕßÔÚÈçºÎʵÏÖÐÅÏ¢µÄ¿É¿¿´«µÝ·½Ã治ͬ¡£TCPÐÒéÖаüº¬ÁËרÃŵĴ«µÝ±£Ö¤»úÖÆ£¬µ±Êý¾Ý½ÓÊÕ·½ÊÕµ½·¢ËÍ·½´«À´µÄÐÅϢʱ£¬»á×Ô¶¯Ïò·¢ËÍ·½·¢³öÈ·ÈÏÏûÏ¢£»·¢ËÍ·½Ö»ÓÐÔÚ½ÓÊÕµ½¸ÃÈ·ÈÏÏûÏ¢Ö®ºó²Å¼ÌÐø´«ËÍÆäËüÐÅÏ¢£¬·ñÔò½«Ò»Ö±µÈ´ýÖ±µ½ÊÕµ½È·ÈÏÐÅϢΪֹ¡£
ÓëTCP²»Í¬£¬UDPÐÒé²¢²»ÌṩÊý¾Ý´«Ë͵ı£Ö¤»úÖÆ¡£Èç¹ûÔÚ´Ó·¢ËÍ·½µ½½ÓÊÕ·½µÄ´«µÝ¹ý³ÌÖгöÏÖÊý¾Ý±¨µÄ¶ªÊ§£¬ÐÒé±¾Éí²¢²»ÄÜ×ö³öÈκμì²â»òÌáʾ¡£Òò´Ë£¬Í¨³£ÈËÃǰÑUDPÐÒé³ÆÎª²»¿É¿¿µÄ´«ÊäÐÒé¡£ 3¡¢³ýÁËÊý¾ÝµÄ°²È«ÐÔºÍÍêÕûÐÔÒÔÍ⣬TCPºÍUDP»¹ÓÐÒÔϼ¸µã²»Í¬Ö®´¦¡£
? ÓÐÐòÊý¾Ý´«Êä ? ÖØ·¢¶ªÊ§µÄÊý¾Ý°ü ? ÉáÆúÖØ¸´µÄÊý¾Ý°ü ? ÎÞ´íÎóÊý¾Ý´«Êä ? ×èÈû/Á÷Á¿¿ØÖÆ
? ÃæÏòÁ¬½Ó£¨È·ÈÏÓд´½¨Èý·½½»ÎÕ£¬Á¬½ÓÒÑ´´½¨²Å×÷´«Êä¡££©
°¸Àý10-5 ʹÓÃTCPÍøÂç³ÌÐòÉÏ´«Í¼Æ¬
Ò»¡¢°¸ÀýÃèÊö
1¡¢ ¿¼ºË֪ʶµã
±àºÅ£º00110011
Ãû³Æ£ºTCP°¸Àý¡ªÎļþÉÏ´«
2¡¢ Á·Ï°Ä¿±ê
? ÕÆÎÕÈçºÎʹÓÃTCPÐÒéÍê³ÉÎļþµÄÍøÂç´«Ê书ÄÜ¡£
3¡¢ ÐèÇó·ÖÎö
ÓÉÓÚTCPÍøÂç³ÌÐòÄܹ»±£Ö¤´«ÊäÊý¾ÝµÄÍêÕûÐԺͰ²È«ÐÔ£¬ËùÒԴ󲿷ֵķþÎñÆ÷¶¼»á²ÉÓÃTCPÐÒéÀ´ÊµÏÖÎļþÉÏ´«µÄ¹¦ÄÜ¡£ÎªÁËÈóõѧÕßÕÆÎÕÈçºÎʹÓÃTCPÐÒéÍê³ÉÎļþÉÏ´«¹¦ÄÜ£¬±¾°¸Àý½«Í¨¹ýʹÓÃTCPÍøÂçÐÒ飬ʵÏÖͼƬÉÏ´«µÄ¹¦ÄÜ¡£
4¡¢ Éè¼ÆË¼Â·£¨ÊµÏÖÔÀí£©
1) ±àд·þÎñÆ÷ÀàPicUploadServer£¬¸ÃÀà°üº¬Ò»¸öSocketÀàÐ͵Ä˽ÓÐÊôÐÔ£¬²¢ÌṩÁ˸ÃÊôÐÔµÄÓÐ
²Î¹¹Ôì·½·¨¡£PicUploadServerÀàʵÏÖRunnable½Ó¿Ú£¬ÖØÐ´run()·½·¨£¬ÔÚrun()·½·¨ÄÚ¶ÁÈ¡¿Í»§¶ËÉÏ´«µÄͼƬ£¬²¢½«Í¼Æ¬´æÈë·þÎñÆ÷Ö¸¶¨Îļþ¼ÐÖС£ 2) ±àд¿Í»§¶ËÀàPicUpLoadClient£¬¸ÃÀàʵÏÖÁ˶Áȡָ¶¨Í¼Æ¬£¬ÏòÖ¸¶¨¶Ë¿Ú·¢ËÍͼƬÊý¾ÝµÄ¹¦ÄÜ¡£ 3) ±àд²âÊÔÀàExample03,ÔÚmain()·½·¨ÖУ¬Í¨¹ýÖ¸¶¨µÄ¶Ë¿ÚºÅ´´½¨ServerSocket¶ÔÏ󣬲¢±àд
ËÀÑ»·£¬ÔÚËÀÑ»·ÖУ¬Í¨¹ýServerSocket¶ÔÏó»ñÈ¡Socket¶ÔÏ󣬲¢¿ªÆôÏ̷߳þÎñ¡£
¶þ¡¢°¸ÀýʵÏÖ
TCPÍøÂç³ÌÐòÖзþÎñ¶Ë£¬´úÂëÈçÏ£º
import java.util.*; import java.io.*; import java.net.*;
class PicUploadServer implements Runnable{
//°üº¬SocketÀàÐ͵Ä˽ÓÐÊôÐÔ private Socket s ;
//°üº¬Socket¶ÔÏóµÄÓвι¹Ô캯Êý
PicUploadServer (Socket s){this.s = s;} public void run(){
try{
File dir = new File(\if(!dir.exists()){ }
\dir.mkdirs();
String filename = dir+File.separator+System.currentTimeMillis()+
//¶ÁÈ¡¿Í»§¶ËµÄ×Ö½ÚÊý¾Ý\\
InputStream in = s.getInputStream(); byte[] bytes = new byte[1024]; int len = 0 ; //Êý¾ÝµÄÄ¿µÄ
FileOutputStream fos = new FileOutputStream(filename); while((len = in.read(bytes))!=-1){ }
fos.write(bytes, 0, len);
¹²·ÖÏí92ƪÏà¹ØÎĵµ