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中文参考手册》,也希望大家多多支持毛票票。
热门推荐
3 足球队祝福语简短
10 校长退休文案祝福语简短
11 国庆简短幽默祝福语
12 简短56岁生日祝福语
13 新年给妹妹祝福语简短
14 祝福语大全简短赞美同学
15 幼儿祝福语押韵句子简短
16 高考送考祝福语简短
17 新年过后奋斗祝福语简短
18 祝贺开业文案祝福语简短