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中文参考手册》,也希望大家多多支持毛票票。