Java Socket编程实例(一)- TCP基本使用
一.服务端代码:
importjava.net.*;//forSocket,ServerSocket,andInetAddress importjava.io.*;//forIOExceptionandInput/OutputStream publicclassTCPEchoServer{ privatestaticfinalintBUFSIZE=32;//Sizeofreceivebuffer publicstaticvoidmain(String[]args)throwsIOException{ intservPort=5500; //Createaserversockettoacceptclientconnectionrequests ServerSocketservSock=newServerSocket(servPort); intrecvMsgSize;//Sizeofreceivedmessage byte[]receiveBuf=newbyte[BUFSIZE];//Receivebuffer while(true){//Runforever,acceptingandservicingconnections SocketclntSock=servSock.accept();//Getclientconnection SocketAddressclientAddress=clntSock.getRemoteSocketAddress(); System.out.println("Handlingclientat"+clientAddress); InputStreamin=clntSock.getInputStream(); OutputStreamout=clntSock.getOutputStream(); //Receiveuntilclientclosesconnection,indicatedby-1return while((recvMsgSize=in.read(receiveBuf))!=-1){ out.write(receiveBuf,0,recvMsgSize); } clntSock.close();//Closethesocket.Wearedonewiththisclient! } /*NOTREACHED*/ } }
二.客户端代码:
importjava.net.*; importjava.io.*; publicclassTCPEchoClient{ publicstaticvoidmain(String[]args)throwsIOException{ Stringserver="127.0.0.1";//ServernameorIPaddress intservPort=5500;////Serverport byte[]data="Hi,World".getBytes(); //Createsocketthatisconnectedtoserveronspecifiedport Socketsocket=newSocket(server,servPort); System.out.println("Connectedtoserver...sendingechostring"); InputStreamin=socket.getInputStream(); OutputStreamout=socket.getOutputStream(); out.write(data);//Sendtheencodedstringtotheserver //Receivethesamestringbackfromtheserver inttotalBytesRcvd=0;//Totalbytesreceivedsofar intbytesRcvd;//Bytesreceivedinlastread while(totalBytesRcvd<data.length){ if((bytesRcvd=in.read(data,totalBytesRcvd,data.length-totalBytesRcvd))==-1) thrownewSocketException("Connectionclosedprematurely"); totalBytesRcvd+=bytesRcvd; }//dataarrayisfull System.out.println("Received:"+newString(data)); socket.close();//Closethesocketanditsstreams } }
上述代码的TCP服务端是单线程,一次只能服务一个客户端。
查看更多Java的语法,大家可以关注:《ThinkinginJava中文手册》、《JDK1.7参考手册官方英文版》、《JDK1.6APIjava中文参考手册》、《JDK1.5APIjava中文参考手册》,也希望大家多多支持毛票票。