Socket¬Oºô¸ô¤W¹B¦æªº¨âÓµ{¦¡¶¡Âù¦V³q°Tªº¤@ºÝ¡A¥¦¬J¥i¥H±µ¨ü½Ð¨D¡A¤]¥i¥Hµo°e½Ð¨D¡A§Q¥Î¥¦¥i¥H¸û¬°¤è«Kªº½s¼gºô¸ô¤W¼Æ¾Úªº¶Ç»¼¡C¦bJava¤¤¡A¦³±MªùªºSocketÃþ¨Ó³B²z¥Î¤áªº½Ð¨D©MÅTÀ³¡C§Q¥ÎSocketÃþªº¤èªk¡A´N¥i¥H¹ê²{¨â¥x¹q¸£¤§¶¡ªº³q°T¡C³o¸Ì´N¤¶²Ð¤@¤U¦bJava¤¤¦p¦ó§Q¥ÎSocket¶i¦æºô¸ô½sµ{¡C
¦bJava¤¤Socket¥i¥H²z¸Ñ¬°«È¤áºÝ©ÎªÌ¦øªA¾¹ºÝªº¤@Ó¯S®íªº¹ï¶H¡A³oÓ¹ï¶H¦³¨âÓÃöÁ䪺¤èªk¡A¤@Ó¬OgetInputStream¤èªk¡A¥t¤@Ó¬OgetOutputStream¤èªk¡CgetInputStream¤èªk¥i¥H±o¨ì¤@Ó¿é¤J¬y¡A«È¤áºÝªºSocket¹ï¶H¤WªºgetInputStream¤èªk±o¨ìªº¿é¤J¬y¨ä¹ê´N¬O±q¦øªA¾¹ºÝµo¦^ªº¼Æ¾Ú¬y¡CGetOutputStream¤èªk±o¨ì¤@Ó¿é¥X¬y¡A«È¤áºÝSocket¹ï¶H¤WªºgetOutputStream¤èªkªð¦^ªº¿é¥X¬y´N¬O±Nnµo°e¨ì¦øªA¾¹ºÝªº¼Æ¾Ú¬y¡A¡]¨ä¹ê¬O¤@Ó½w½Ä°Ï¡A¼È®É¦sÀx±Nnµo°e¹L¥hªº¼Æ¾Ú¡^¡C
µ{¦¡¥i¥H¹ï³o¨Ç¼Æ¾Ú¬y®Ú¾Ú»Ýn¶i¦æ¶i¤@¨Bªº«Ê¸Ë¡C¥»¤åªº¨Ò¤l´N¹ï³o¨Ç¼Æ¾Ú¬y¶i¦æ¤F¤@©wªº«Ê¸Ë¡]Ãö©ó«Ê¸Ë¥i¥H°Ñ¦ÒJava¤¤¬yªº¹ê²{³¡¤À¡^¡C
¬°¤F§ó¦nªº»¡©ú°ÝÃD¡A³o¸ÌÁ|¤F¤@Óºô¤W¹ï¸Üªº¨Ò¤l¡A«È¤áºÝ±Ò°Ê¥H«á¡A¦øªA¾¹·|±Ò°Ê¤@Ó½uµ{¨Ó»P«È¤á¶i¦æ¤å¦r¥æ¬y¡C
n§¹¦¨³oÓ¤u§@¡A»Ýn§¹¦¨¤TÓ³¡¤Àªº¤u§@¡A¥H¤U¨Ì¦¸»¡©ú¡G
¤@¡B«Ø¥ß¦øªA¾¹Ãþ
Java¤¤¦³¤@Ó±Mªù¥Î¨Ó«Ø¥ßSocket¦øªA¾¹ªºÃþ¡A¦W¥sServerSocket,¥i¥H¥Î¦øªA¾¹»Ýn¨Ï¥ÎªººÝ¤f¸¹§@¬°°Ñ¼Æ¨Ó³Ð«Ø¦øªA¾¹¹ï¶H¡C
ServerSocket server = new ServerSocket(9998)
³o±ø»y¥y³Ð«Ø¤F¤@Ó¦øªA¾¹¹ï¶H¡A³oÓ¦øªA¾¹¨Ï¥Î9998¸¹ºÝ¤f¡C·í¤@ӫȤáºÝµ{¦¡«Ø¥ß¤@ÓSocket³s±µ¡A©Ò³s±µªººÝ¤f¸¹¬°9998®É¡A¦øªA¾¹¹ï¶Hserver«KÅTÀ³³oÓ³s±µ¡A¨Ã¥Bserver.accept()¤èªk·|³Ð«Ø¤@ÓSocket¹ï¶H¡C¦øªA¾¹ºÝ«K¥i¥H§Q¥Î³oÓSocket¹ï¶H»P«È¤á¶i¦æ³q°T¡C
Socket incoming = server.accept()
¶i¦Ó±o¨ì¿é¤J¬y©M¿é¥X¬y,¨Ã¶i¦æ«Ê¸Ë
BufferedReader in = new BufferedReader(new
InputStreamReader(incoming.getInputStream()));
PrintWriter out = new PrintWriter(incoming.getOutputStream(),true);
ÀH«á¡A´N¥i¥H¨Ï¥Îin.readLine()¤èªk±o¨ì«È¤áºÝªº¿é¤J¡A¤]¥i¥H¨Ï¥Îout.println()¤èªk¦V«È¤áºÝµo°e¼Æ¾Ú¡C±q¦Ó¥i¥H®Ú¾Úµ{¦¡ªº»Ýn¹ï«È¤áºÝªº¤£¦P½Ð¨D¶i¦æ¦^À³¡C
¦b©Ò¦³³q°Tµ²§ô¥H«áÀ³¸ÓÃö³¬³o¨âӼƾڬy¡AÃö³¬ªº¶¶§Ç¬O¥ýÃö³¬¿é¥X¬y¡A¦AÃö³¬¿é¤J¬y¡A§Y¨Ï¥Î
out.close();
in.close();
¤G¡B«Ø¥ß«È¤áºÝ¥N½X
¬Û¤ñ¦øªA¾¹ºÝ¡A«È¤áºÝn²³æ¤@¨Ç¡A«È¤áºÝ¥u»Ý¥Î¦øªA¾¹©Ò¦b¾÷¾¹ªºip¥H¤Î¦øªA¾¹ªººÝ¤f§@¬°°Ñ¼Æ³Ð«Ø¤@ÓSocket¹ï¶H¡C±o¨ì³oÓ¹ï¶H«á¡A´N¥i¥H¥Î"«Ø¥ß¦øªA¾¹"³¡¤À¤¶²Ðªº¤èªk¹ê²{¼Æ¾Úªº¿é¤J©M¿é¥X¡C
Socket socket = new Socket("168.160.12.42",9998);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
¥H¤Wªºµ{¦¡¥N½X«Ø¥ß¤F¤@ÓSocket¹ï¶H¡A³oÓ¹ï¶H³s±µ¨ìip¦a§}¬°168.160.12.42ªº¥D¾÷¤W¡BºÝ¤f¬°9998ªº¦øªA¾¹¹ï¶H¡C¨Ã¥B«Ø¥ß¤F¿é¤J¬y©M¿é¥X¬y¡A¤À§O¹ïÀ³¦øªA¾¹ªº¿é¥X©M«È¤áºÝªº¼g¤J¡C
¤T¡B«Ø¥ß¥Î¤á¤¶±
ŪªÌ¥i¥H®Ú¾Ú¦Û¤vªº³ß¦n«Ø¥ß¦Û¤vªº¥Î¤á¤¶±¡A³o¤£¬O¥»¤åªº«ÂI¡C
¸g¹L¥H¤W¤TÓ¨BÆJ¡A´N¥i¥H«Ø¥ß¤@Ó¤ñ¸û²³æªº¹ï¸Üµ{¦¡¡C¦ý¬O¡A¬°¤F¨Ï³oÓµ{¦¡§ó¥[§¹µ½¡AÀ³¶i¦æ¥H¤U´XÓ§ï¶i¡G
¤@¡B²{¦b¦øªA¾¹¥u¯àªA°È¤@ӫȤá¡A¤]´N¬O³æ½uµ{ªº¡C¥i¥H±N¥¦§ï¶i¬°¦h½uµ{¦øªA¾¹¡C
try
¡@¡@{ file://«Ø¥ß¦øªA¾¹
¡@¡@¡@ServerSocket server = new ServerSocket(9998);
¡@¡@¡@int i=1;
¡@¡@¡@for(;;)
¡@¡@¡@{
¡@¡@¡@¡@Socket incoming = server.accept();
¡@¡@¡@¡@new ServerThread(incoming,i).start();
¡@¡@¡@¡@i++;
¡@¡@¡@}
¡@¡@}catch (IOException ex){ ex.printStackTrace(); }
|
°j°éÀË´ú¬O§_¦³«È¤á³s±µ¨ì¦øªA¾¹¤W¡A¦pªG¦³¡A«h³Ð«Ø¤@Ó½uµ{¨ÓªA°È³oӫȤá¡A³oÓ½uµ{ªº¦WºÙ¬OServerThread¡A³oÓÃþÂX®i¤FThreadÃþ¡A¥¦ªº½s¼g¤èªk»P«ezªº¦øªA¾¹ªº¼gªk¬Û¦P¡C
¤G¡B¬°¤F¥i¥HÀH®É±o¨ì¹ï¤è¶Ç°e¹L¨Óªº®ø®§¡A¥i¥H¦b¦øªA¾¹¥H¤Î«È¤áºÝ¦U«Ø¥ß¤@Ó¿W¥ßªº½uµ{¨Ó¹î¬Ý¿é¤J¬y¡A¦pªG¿é¤J¬y¤¤¦³¿é¤J¡A«h¥i¥H§Y®ÉÅã¥Ü¥X¨Ó¡C¥N½X¦p¤U¡G
new Thread()
¡@¡@{
¡@¡@¡@public void run()
¡@¡@¡@{
¡@¡@¡@¡@try
¡@¡@¡@¡@{¡@
¡@¡@¡@¡@¡@while(true)
¡@¡@¡@¡@¡@{
¡@¡@¡@¡@¡@¡@checkInput();
¡@¡@¡@¡@¡@¡@sleep(1000);//¨C1000²@¬íÀË´ú¤@¦¸
¡@¡@¡@¡@¡@}
¡@¡@¡@¡@}catch(InterruptedException ex)
¡@¡@¡@{
¡@¡@¡@}catch(IOException ex)
¡@¡@¡@{
¡@¡@¡@¡@}
¡@¡@¡@}
¡@¡@}.start();
¡@¡@¨ä¤¤ªºcheckInput()¤èªk¬°
¡@¡@private void checkInput() throws IOException
¡@¡@{
¡@¡@¡@String line;
¡@¡@¡@if((line=in.readLine())!=null) file://ÀË´ú¿é¤J¬y¤¤¬O§_¦³·sªº¼Æ¾Ú
¡@¡@¡@¡@t.setPartner(line); file://±N¼Æ¾Ú¬y¤¤ªº®ø®§Åã¥Ü¥X¨Ó
¡@¡@}
|
³q¹L¥H¤W§ï¶i¡Aµ{¦¡´N¥i¥H¤ñ¸û¦nªº¹B¦æ¤F¡C
ªþ¡G¦øªA¾¹ªº¹ê²{¥N½X
import java.net.*;
¡@¡@import java.io.*;
¡@¡@import java.awt.event.ActionEvent;
¡@¡@import java.awt.event.ActionListener;
¡@¡@public class talkServer
¡@¡@{ public static void main(String[] args)
¡@¡@¡@{ try
¡@¡@¡@¡@{ file://«Ø¥ß¦øªA¾¹
¡@¡@¡@¡@¡@ServerSocket server = new ServerSocket(9998);
¡@¡@¡@¡@¡@int i=1;
¡@¡@¡@¡@¡@for(;;)
¡@¡@¡@¡@¡@¡@{ Socket incoming = server.accept()
¡@¡@¡@¡@¡@¡@¡@new ServerThread(incoming,i).start();
¡@¡@¡@¡@¡@¡@¡@i++;
¡@¡@¡@¡@¡@¡@}
¡@¡@¡@¡@¡@}catch (IOException ex){
¡@¡@¡@¡@¡@ex.printStackTrace();
¡@¡@¡@¡@}
¡@¡@¡@}
¡@¡@}
¡@¡@class ServerThread extends Thread implements ActionListener
¡@¡@{
¡@¡@¡@private int threadNum;
¡@¡@¡@private Socket socket;
¡@¡@¡@talkServerFrm t;
¡@¡@¡@BufferedReader in;
¡@¡@¡@PrintWriter out;
¡@¡@¡@private boolean talking=true;
¡@¡@¡@public ServerThread(Socket s,int c)
¡@¡@¡@{ threadNum = c;
¡@¡@¡@¡@socket = s;
¡@¡@¡@}
¡@¡@public void actionPerformed(ActionEvent e)
¡@¡@{ Object source = e.getSource();
¡@¡@¡@try{
¡@¡@¡@¡@if(source==t.btnSend)
¡@¡@¡@¡@¡@{ out.println(t.getTalk());
¡@¡@¡@¡@¡@¡@t.clearTalk();
¡@¡@¡@¡@}else
¡@¡@¡@¡@if(source==t.btnEnd)
¡@¡@¡@¡@¡@{ out.println("½Í¸Ü¹Lµ{³Q¹ï¤è²×¤î");
¡@¡@¡@¡@¡@¡@out.close();
¡@¡@¡@¡@¡@¡@in.close();
¡@¡@¡@¡@¡@¡@talking = false;
¡@¡@¡@¡@¡@}
¡@¡@¡@}catch(IOException ex){
¡@¡@¡@}
¡@¡@}
¡@¡@public void run()
¡@¡@{ try{
¡@¡@¡@¡@t=new talkServerFrm(new Integer(threadNum).toString(),this);
¡@¡@¡@¡@t.setSize(500,500);
¡@¡@¡@¡@t.show();
¡@¡@¡@¡@in = new BufferedReader(new
¡@¡@¡@¡@¡@¡@¡@ InputStreamReader(socket.getInputStream()));
¡@¡@¡@¡@out = new PrintWriter(socket.getOutputStream(),true);
¡@¡@¡@}catch(Exception e){
¡@¡@}
¡@¡@¡@new Thread()
¡@¡@¡@{ public void run()
¡@¡@¡@¡@{ try{
¡@¡@¡@¡@¡@¡@while(true)
¡@¡@¡@¡@¡@¡@{ checkInput();
¡@¡@¡@¡@¡@¡@¡@sleep(1000);
¡@¡@¡@¡@}
¡@¡@¡@}catch (InterruptedException ex){
¡@¡@¡@}catch(IOException ex){
¡@¡@¡@}
¡@¡@¡@}
¡@¡@¡@}.start();
¡@¡@¡@while(talking)
¡@¡@¡@{ }
¡@¡@¡@t.dispose();
¡@¡@¡@}
¡@¡@private void checkInput() throws IOException
¡@¡@{ String line;
¡@¡@¡@if((line=in.readLine())!=null)
¡@¡@¡@¡@t.setPartner(line); file://³o¬O¤¶±Ãþùتº¤èªk¡A
¡@¡@¡@¡@file://¥Î¨Ó±Nlineªº¤º®e¿é¥X¨ì¥Î¤á¤¶±
¡@¡@¡@}
¡@¡@}
(T007)
|
¡@¡@