鉴于你是初学者不要好高骛远!下面的看懂了就行,不懂就翻一下cs模式的书!
1。服务端工程NioServerjava: 采用nio 方式的异步socket通信,不仅可以实现你的服务器还可以让你多学习一下什么是nio
2。客户端工程UserClientjava: 采用Swing技术画了一个简单的UI界面,比较土,原因是我没那么多时间去设计界面,你需要的话可以自己去修改得漂亮点,相信不难
现在贴工程1:
package comnet;
import javaioIOException;
import javanetInetSocketAddress;
import javanetServerSocket;
import javanioByteBuffer;
import javaniochannelsSelectionKey;
import javaniochannelsSelector;
import javaniochannelsServerSocketChannel;
import javaniochannelsSocketChannel;
import javautilIterator;
import javautilSet;
public class NioServer {
public static final int SERVERPORT=5555;
public static final String USERNAME="wangzhirong";
public static final String PASSWORD="123456";
public static final String ISACK="ACK";
public static final String ISNAK="NAK!";
// Selector selector;//选择器
// SelectionKey key;//key。 一个key代表一个Selector 在NIO通道上的注册,类似主键;
// //取得这个Key后就可以对Selector在通道上进行操作
private ByteBuffer echoBuffer = ByteBufferallocate( 1024 );// 通道数据缓冲区
public NioServer(){
}
public static void main(String[] args) throws IOException {
NioServer ns=new NioServer();
nsBuildNioServer();
}
public void BuildNioServer() throws IOException{
/////////////////////////////////////////////////////////
///////先对服务端的ServerSocket进行注册,注册到Selector ////
/////////////////////////////////////////////////////////
ServerSocketChannel ssc = ServerSocketChannelopen();//新建NIO通道
sscconfigureBlocking( false );//使通道为非阻塞
ServerSocket ss = sscsocket();//创建基于NIO通道的socket连接
//新建socket通道的端口
ssbind(new InetSocketAddress("127001",SERVERPORT));
Selector selector=Selectoropen();//获取一个选择器
//将NIO通道选绑定到择器,当然绑定后分配的主键为skey
SelectionKey skey = sscregister( selector, SelectionKeyOP_ACCEPT );
////////////////////////////////////////////////////////////////////
//// 接收客户端的连接Socket,并将此Socket也接连注册到Selector ////
///////////////////////////////////////////////////////////////////
while(true){
int num = selectorselect();//获取通道内是否有选择器的关心事件
if(num<1){continue; }
Set selectedKeys = selectorselectedKeys();//获取通道内关心事件的集合
Iterator it = selectedKeysiterator();
while (ithasNext()) {//遍历每个事件
try{
SelectionKey key = (SelectionKey)itnext();
//有一个新联接接入事件,服务端事件
if ((keyreadyOps() & SelectionKeyOP_ACCEPT)
== SelectionKeyOP_ACCEPT) {
// 接收这个新连接
ServerSocketChannel serverChanel = (ServerSocketChannel)keychannel();
//从serverSocketChannel中创建出与客户端的连接socketChannel
SocketChannel sc = serverChanelaccept();
scconfigureBlocking( false );
// Add the new connection to the selector
// 把新连接注册到选择器
SelectionKey newKey = scregister( selector,
SelectionKeyOP_READ );
itremove();
Systemoutprintln( "Got connection from "+sc );
}else
//读客户端数据的事件,此时有客户端发数据过来,客户端事件
if((keyreadyOps() & SelectionKeyOP_READ)
== SelectionKeyOP_READ){
// 读取数据
SocketChannel sc = (SocketChannel)keychannel();
int bytesEchoed = 0;
while((bytesEchoed = scread(echoBuffer))> 0){
Systemoutprintln("bytesEchoed:"+bytesEchoed);
}
echoBufferflip();
Systemoutprintln("limet:"+echoBufferlimit());
byte [] content = new byte[echoBufferlimit()];
echoBufferget(content);
String result=new String(content);
doPost(result,sc);
echoBufferclear();
itremove();
}
}catch(Exception e){}
}
}
}
public void doPost(String str,SocketChannel sc){
boolean isok=false;
int index=strindexOf('|');
if(index>0){
String name=strsubstring(0,index);
String pswd=strsubstring(index+1);
if(pswd==null){pswd="";}
if(name!=null){
if(nameequals(USERNAME)
&& pswdequals(PASSWORD)
){
isok=true;
}else{
isok=false;
}
}else{
isok=false;
}
}else{
isok=false;
}
String result="";
if(isok){
result="ACK";
}else{
result="NAK!";
}
ByteBuffer bb = ByteBufferallocate( resultlength() );
bbput(resultgetBytes());
bbflip();
try {
scwrite(bb);
} catch (IOException e) {
eprintStackTrace();
}
bbclear();
}
}
下面贴工程2
import javaawtColor;
import javaawtDimension;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javanetSocket;
import javanetUnknownHostException;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJPanel;
import javaxswingJPasswordField;
import javaxswingJTextField;
public class UserClient implements ActionListener{
JFrame jf;
JPanel jp;
JLabel label_name;
JLabel label_pswd;
JTextField userName;
JButton jb;
JPasswordField paswrd;
JLabel hintStr;
public UserClient (){
jf=new JFrame("XXX 登陆系统");
jp=new JPanel();
jfsetContentPane(jp);
jfsetPreferredSize(new Dimension(350,220));
jpsetPreferredSize(new Dimension(350,220));
jpsetBackground(Colorgray);
label_name=new JLabel();
label_namesetPreferredSize(new Dimension(150,30));
label_namesetText("请输入帐户(数字或英文):");
userName=new JTextField();
userNamesetPreferredSize(new Dimension(150,30));
jpadd(label_name);
jpadd(userName);
label_pswd=new JLabel();
label_pswdsetPreferredSize(new Dimension(150,30));
label_pswdsetText("请输入密码:");
jpadd(label_pswd);
paswrd=new JPasswordField();
paswrdsetPreferredSize(new Dimension(150,30));
jpadd(paswrd);
jb=new JButton("OK");
jbsetPreferredSize(new Dimension(150,30));
jbsetText("确 定");
jbaddActionListener( this);
jpadd(jb);
hintStr=new JLabel();
hintStrsetPreferredSize(new Dimension(210,40));
hintStrsetText("");
hintStrsetForeground(ColorRED);
jpadd(hintStr);
jfpack();
jfsetVisible(true);
jfsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
private String name;
private String pswd;
public void actionPerformed(ActionEvent e) {
name=userNamegetText()trim();
pswd=new String(paswrdgetPassword());
if(pswd==null){
pswd="";
}else{
pswd=pswdtrim();
}
if(name!=null && namelength()>0){
hintStrsetText("正在验证客户端,请稍候");
start();
}
}
OutputStream os;
Socket s;
InputStream is;
public void start(){
//建立联网线程
new Thread(new Runnable(){
public void run() {
try {
s=new Socket("127001",5555);
//写
os=sgetOutputStream();
oswrite(namegetBytes());
oswrite('|');//用户名与密码用"|"分隔
oswrite(pswdgetBytes());
osflush();
//读内容
Threadsleep(1000);
is=sgetInputStream();
int len=isavailable();
Systemoutprintln("len:"+len);
byte[] bytes=new byte[len];
isread(bytes);
String resut=new String(bytes);
Systemoutprintln("resut:"+resut);
//TODO 这里通过返回结果处理
if(resutequals("ACK")){
hintStrsetText("验证成功,欢迎光临!");
}else{
paswrdsetText(null);
hintStrsetText("用户名或密码错误,请重新输入");
}
} catch (UnknownHostException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
} catch (InterruptedException e) {
eprintStackTrace();
}finally{
// try {
// osclose();
// isclose();
// sclose();
// } catch (IOException e) {
// eprintStackTrace();
// }
}
}
})start();
}
public static void main(String[] args) {
new UserClient();
}
}
战略1:层层防晒
首先,美白最重要的工作就是防晒。很多人觉得出门前一定要搽防晒油,但我觉得物理性防晒更好——绝对要拿遮阳伞!
买洋伞时要注意伞里是否有个卷标写明这把伞是抗UV的,也就是这把伞真的可以防紫外线(一般的伞其实是抵抗不了紫外线的)。当然市面上也有卖兼具挡雨和抗UV的两用伞。通常卷标会缝在雨伞里靠骨架内侧的地方,或是在它的价格吊牌上就有标明抗UV作用。
另外,出门一定要穿长袖的衣服。很多人觉得这点很难受,因为在大热天里你可能要骑机车,或是在外头到处跑办事,免不了会流很多汗。但我还是坚持:『情愿热死也不要晒太阳!』
不管如何我都一定穿长袖。像徐熙媛拍『战神』时,从头到尾都是穿长袖,就算是在夏天的垦丁也是一样。我经历过比大家更痛苦的忍耐酷热经验,有多难受我完全了解,但看到我的白,你就会知道坚持是值得的!
除了撑洋伞、穿长袖,还要再戴上帽子才算万无一失!
但一般的帽子可能会弄乱你的头发或是妆,所以我都用一种『铁面人』遮阳帽,它不是整顶盖住头的那一种,只有前缘一大片突出来,还可以将前缘拉到最大遮住整个脸。就是你去作完雷射脸部手术后,医生会发给你遮阳的那种帽子啦!想自己买的话,到宝雅生活馆也可以买得到喔!
◎战略2:搽脸部隔离霜
就算你是不太化妆的人,也一定要搽些脸部的隔离防晒霜,而且SPF值要从30起跳。如果你至少会搽粉饼,那么就一定要用防晒粉饼。市面上许多品牌都出产防晒粉饼,但我推荐Chanel的,这一款粉饼打着不但防晒而且有美白效果,这个粉饼搽起来虽然轻透,但遮瑕作用很不错。
脸部的隔离霜我则推荐露得清的脸部隔离防晒乳,另外Chanel的隔离霜也不错!不过Chanel的隔离霜最好是要化妆才用,因为它含有一些珠光成分,如果不化妆只搽这个,整个脸会亮亮的,感觉很怪。但是如果你搽了这款隔离霜再去上粉,看起来就会满均匀,皮肤也会很粉的很剔透哟!
◎战略3:必要时才搽身体防晒乳
有人说,不只脸要搽防晒油,身体也要每天搽防晒油。但身体防晒油它非常难卸,不仅会沾上衣服,每隔几个小时还要补搽,洗澡前又还要先为身体卸妆,才洗得掉它。除非你要做户外活动,或是每天骑机车曝晒在太阳下,不然防晒油其实不太需要搽。平常撑洋伞、穿长袖上衣、长裤加上帽子,脸部又搽防晒乳,保护得已经滴水不漏相当周全了。
---------------------------------
用柠檬敷脸吧!
但是皮肤会变白并不是完全正确的,柠檬里含有高感光物质,所以白天敷的话,反而会变黑
因此,一定要在晚上敷!
我再告诉你种自制美白面膜吧!效果不错的!你一定用得上的!
1把醋和盐用水溶解,比例是大概水:白醋:盐=9:3:1,用调好的混合液把毛巾润湿,擦在脸上,早晚各一次,(如果要多擦个一两次也没问题啦),效果不错哦,而且见效很快,皮肤会变白,痘痘也会不见了.
2用草莓炸成汁,放上蛋清。每2~3天擦一次
3用水和蜂蜜调配后加入珍珠粉,这样用几次以后,脸是又白又嫩!
4最简单最便宜最方便但是十分十分十分有效的美白方法(亲身体验)将香蕉弄成糊状(一定是香蕉,不能用芭蕉代替),然后倒入全脂牛奶,再加入少量水。这些东西的比例大概是2:5:1然后往脸上抹,然后轻轻拍打脸部,最后什么都不要做。20分钟后洗掉你发现了什么????!!!是不是白了一圈?
美白小秘方 美丽大收集
1、牛奶美白:准备一小杯鲜奶,(夏天的时候,也可以把鲜奶到放到冰箱里,敷上凉凉的,会更舒服)。用蒸气蒸脸,将化妆棉吸满鲜奶,敷在脸上十五分钟左右,取下,用清水将脸上的牛奶洗净。长期坚持,可以使肤色白净均匀。
2、准备三指宽二指长的面带斑点的芦荟叶去刺洗干净,然后是一块三厘米长的黄瓜、¼鸡蛋清、2—3克珍珠粉、适量的面粉(用做调稀稠)。将芦荟、黄瓜放入榨汁机榨汁后倒入小碗,然后放入蛋清、珍珠粉、适量面粉调成糊,以不往下流淌为准。把脸洗干净,将调好的糊抹在脸上,干后洗净,拍上柔肤水、护肤品即可,每周1—2次。
3、蕃茄蜂蜜美白
这个美白配方可同时作脸及手部美白。特别是暗疮皮肤,能有效去油腻,防止感染,使皮肤白皙细致。
配方:蕃茄半个、蜂蜜适量。
用法:可将蕃茄搅拌成蕃茄汁后加入适量蜂蜜搅至糊状。均匀涂于脸或手部,待约15分钟洗去。建议每星期做1-2次
4、将青椒、大黄瓜、四分之一苦瓜、西洋芹、青苹果等打成美容蔬菜汁来喝,这样的蔬菜汁里头有足够的维他命 C,对于美白非常有效。
5、取新鲜鸡蛋一枚,洗净揩干,加入500毫升优质醋中浸泡一个月。当蛋壳溶解于醋液中之后,取一小汤匙溶液掺入一杯开水,搅拌后服用,每天一杯。长期服用醋蛋液,能使皮肤光滑细腻,扫除面部所有黑斑。
6 蜂蜜蛋白膜;新鲜鸡蛋一枚,蜂蜜一小汤匙,将两者搅和均匀,临睡前用干净软刷子将此膜涂刷在面部,其间可进行按摩,刺激皮肤细胞,促进血液循环。待一段时间风干后,用清水洗净,每周两次为宜。这种面膜还可以用水释稀后搓手,冬季可防治皲裂。
7、中医美白:材料:白芷、甘草、核仁、当归、绿豆粉、檀香等分研末。
用法:
(1)洗脸:加适量的水,即可。
(2)敷脸:加蜂蜜,牛奶及1/4颗的蛋白,适量调敷于全脸(当然眼及嘴不可敷),待干后再清水洗净即可。一星期1~2次(不要太多次,皮肤会受不了),可用于青春痘、黑班、雀斑,同样也可缩小鼻旁的毛细孔,用过的人都觉的不错,皮肤变白嫩,又便宜。
8、材料:白芷6克;蛋黄1个;蜂蜜1大匙;小黄瓜汁1小匙;橄榄油3小匙。
做法:(1)先将白芷粉末,装在碗中,加入蛋黄搅均匀。(2)再加入蜂蜜和小黄瓜汁,调匀后涂抹于脸上,约二十分钟后,再用清水冲洗干净。(3)脸洗净后,用化妆棉沾取橄榄油,敷于脸上,约5分钟。(4)然后再以热毛巾覆盖在脸上,此时化妆棉不需拿掉。(5)等毛巾冷却后,再把毛巾和化妆棉取下,洗净脸部即可。
9、 蛋清面膜:将蛋清打入碗内(去蛋黄)搅拌至起白色泡沫后,加入新鲜柠檬6-8滴,搅匀直接涂在脸上,具有收敛皮肤、消炎抗皱的作用。
10、牛奶面膜:用鲜牛奶一汤匙,加4-5滴橄榄油,面粉适量,调匀后敷面。此面膜,具有收敛作用,长期使用可消除面部皮肤上的皱纹,增加皮肤活力和弹性,使皮肤清爽润滑,适用于中老年妇女或面部皱纹较多的孕产妇。
11、香蕉面膜:将香蕉去皮捣烂成糊状后敷面,15-20分钟后洗去,长期坚持可使脸部皮肤细嫩、清爽,特别适用于干性或敏感性皮肤的面部美容,效果良好。此方法可使皮肤清爽滑润,并可去除脸部痤疮及雀斑。这种方法适合任何一种皮肤,一周一次,可软化角质净白皮肤
12、银耳面膜:银耳、白芷、茯苓、玉竹各50克,共研末过筛,每晚取粉5克,配面粉3克用水调匀涂面,次日清晨洗去。银耳、白芷、玉竹均能滋养肌肤,茯苓能祛面斑,并引导诸药直入肌肤,但面部患有皮炎的人要慎用。
13、苹果面膜:将苹果去皮切块或捣泥,然后涂于脸部,如系干性过敏性皮肤,可加适量鲜牛奶或植物油,油性皮肤宜加些蛋清。15-20分钟后用热毛巾洗干净即可。隔天一次,一个疗程为20天,具有使皮肤细滑、滋润、白腻的作用,还可消除皮肤暗疮、雀斑、黑斑等症状。
14、橄榄油面膜:把橄榄油加热至37℃左右,再加入适量蜂蜜,然后把纱布块浸在油中取出覆盖在脸上,20分钟后取下,有防止皮肤衰老,润肤祛斑除皱之效,适用于皮肤特别干燥者。
15、柠檬面膜:将一个鲜柠檬榨汁后加一倍的水,再加入三大匙面粉调成面膏状随后敷在脸上,15-20分钟左右取下,或将一个鲜柠檬切片直接贴于面部15-20分钟左右取下,洗净脸部。每天一次,七天为一个疗程。此面膜具有收敛作用,可使皮肤清爽、润滑、细嫩,长期坚持能延缓皮肤衰老。
16、黄瓜面膜:取鲜黄瓜汁加入奶粉、蜂蜜适量,风油精数滴调匀后涂面,20-30分钟后洗净,或将黄瓜洗净切薄片直接贴于脸部,具有润肤、增白、除皱的作用。
17、白芷面膜:取白芷10克,白附子10克,共研细末,加水和蜂蜜适量调奖敷面,20分钟后洗净,有祛皱、消斑、增白作用,适用于面部色素沉着或黄褐增斑患者。
18、蜂蜜番茄面膜:先将番茄压烂取汁,加入适量蜂蜜和少许面粉调成膏状,涂于面部保持20-30分钟,具有使皮肤滋润、白嫩、柔软的作用,长期使用还具有祛斑除皱和治疗皮肤痤疮等功能。
19、酸牛奶、蜂蜜、柠檬汁各100毫克,加5粒维生素E调匀,敷面并保留15分钟,然后用清水洗净。此法可促进皮表上的死细胞脱落,新细胞再生,从而达到健美皮肤的目的。
20、牛奶100毫升,草莓50克,捣烂如泥,调成糊状,涂擦面部,保留20分钟后洗去。此法可防止皮肤干燥、老化,使皮肤光滑、湿润、细腻。
21、鲜牛奶50毫升,加4~5滴橄榄油及适量面粉调匀敷面,20分钟后洗净。此法长期使用,可增加皮肤的活力弹性,使皮肤变得清爽润滑,细腻洁白。
22、酸牛奶、奶油各等份,混合调匀后敷面,保留20分钟后用清水洗净。此法具有收敛作用,长期坚持可消除面部皮肤上的皱纹,适用于中老年妇女或面部皱纹较多的孕产妇
23、用牛奶,蛋青,还有柠檬汁,还有放点蜂蜜,还有珍珠粉,再加点VE搅拌均匀了以后,放面膜纸浸泡,泡几个小时以后敷在脸上,很配偶的脸啊,偶皮肤敏感,而且很干燥,蜂蜜牛奶都是滋润的,牛奶还美白,柠檬有VC,还有VE。
---------------------------------
嫌麻烦就在每天洗脸的水中放几滴白醋, 一个月见效啊
注意:一定要是白醋才行,黑醋不行!!!
---------------------------------
◎美白大补帖1:维他命C
维他命C含有美白的作用,但是维他命C最好吃维他命C胶囊,或是发泡维他命C锭,就是丢在水中会发泡溶解的那一种,而且要早晚都吃。因为维他命C就算摄取过多,也会随着尿液排出,不会囤积在体内,需要时晚上再补充一些也无妨。至于维他命C口含锭或是维他命C软糖,效果就很有限了。
◎美白大补帖2:杏仁
杏仁和维他命C一样,必须每天喝。在牛奶或豆浆里泡入杏仁粉,天天喝美白效果也可以很快看出来。
◎美白大补帖3:珍珠粉
不知道是不是巧合,我觉得白的食物吃了容易变白,像杏仁、牛奶、豆浆、珍珠粉啦都是白色一族。在市面上有卖一包一包装的珍珠粉,每天早晚服用,也有不错美白效果。
珍珠粉还可以和面膜调在一起敷脸,调在护唇膏里头用来护唇,调在护手霜里用来护手。它在我的美白补帖排行里总是前列几名喔!
◎美白大补帖4:豆浆
吃素之后我发现,豆浆除了能美白外,还可以补充体力。如果你肉吃得比较少,或是早上起床后常常没精神,可以在起床后喝一杯打了一颗生鸡蛋的热豆浆,如果怕胖就不要加糖。最近我还听到传说,说豆浆加生鸡蛋有丰胸的神奇效果哩!
◎美白大补帖5:鲜奶
鲜奶也是我非常喜欢的饮品,我早上起床如果没喝豆浆,就一定会喝鲜奶。睡前喝热鲜奶能帮助睡眠,早上喝冰鲜奶可以解决宿便。而且你会很明显的感觉到,早上喝过鲜奶,一整天的体力会比较好。最重要的是,鲜奶是白的,我总觉得喝鲜奶也有辅助美白的效果呢!
但同样也是白色的优酪乳,我觉得它的美白效果就不强了,不过在优酪乳里加绿茶粉,能帮助排便。只是,优酪乳的热量其实满高的。
------------------------------
不吃九层塔、香菜、芹菜、红萝卜和木瓜。九层塔、香菜和芹菜含有吸光剂,吃了它们之后遇到阳光皮肤容易变黑;红萝卜和木瓜则因为它们本来就是红色的,吃多了之后晒得偏红或是偏黄,这些都是医学信息上已经证实的。
我有一位朋友希望自己的皮肤可以晒得健康黝黑,长期吃红萝卜与木瓜来加强,再跑去晒太阳,结果把肤色晒得黄黑黄黑的,有够神奇吧。所以如果你想美白又天天吃红萝卜和木瓜,就算保养到不行也不会很白的啦!
服务端程序:
import javaioIOException;
import javanetInetSocketAddress;
import javanetServerSocket;
import javanioByteBuffer;
import javaniochannelsSelectionKey;
import javaniochannelsSelector;
import javaniochannelsServerSocketChannel;
import javaniochannelsSocketChannel;
import javautilEnumeration;
import javautilHashtable;
import javautilIterator;
import javautilSet;
public class NioServer {
public static final int SERVERPORT=5555;
public static final String[] USERNAME={"1","2","3","4","5","jack","tom"};
public static final String PASSWORD="1";
public static final String ISACK="ACK";
public static final String ISNAK="NAK!";
// Selector selector;//选择器
// SelectionKey key;//key。 一个key代表一个Selector 在NIO通道上的注册,类似主键;
// //取得这个Key后就可以对Selector在通道上进行操作
private ByteBuffer echoBuffer = ByteBufferallocate( 1024 );// 通道数据缓冲区
public NioServer(){
}
public static void main(String[] args) throws IOException {
NioServer ns=new NioServer();
nsBuildNioServer();
}
public void BuildNioServer() throws IOException{
/////////////////////////////////////////////////////////
///////先对服务端的ServerSocket进行注册,注册到Selector ////
/////////////////////////////////////////////////////////
ServerSocketChannel ssc = ServerSocketChannelopen();//新建NIO通道
sscconfigureBlocking( false );//使通道为非阻塞
ServerSocket ss = sscsocket();//创建基于NIO通道的socket连接
//新建socket通道的端口
ssbind(new InetSocketAddress("127001",SERVERPORT));
Selector selector=Selectoropen();//获取一个选择器
//将NIO通道选绑定到择器,当然绑定后分配的主键为skey
//SelectionKey skey =
sscregister( selector, SelectionKeyOP_ACCEPT );
////////////////////////////////////////////////////////////////////
//// 接收客户端的连接Socket,并将此Socket也接连注册到Selector ////
///////////////////////////////////////////////////////////////////
while(true){
int num = selectorselect();//获取通道内是否有选择器的关心事件
if(num<1){continue; }
Set selectedKeys = selectorselectedKeys();//获取通道内关心事件的集合
Iterator it = selectedKeysiterator();
while (ithasNext()) {//遍历每个事件
try{
SelectionKey key = (SelectionKey)itnext();
//有一个新联接接入事件,服务端事件
if ((keyreadyOps() & SelectionKeyOP_ACCEPT)
== SelectionKeyOP_ACCEPT) {
// 接收这个新连接
ServerSocketChannel serverChanel = (ServerSocketChannel)keychannel();
//从serverSocketChannel中创建出与客户端的连接socketChannel
SocketChannel sc = serverChanelaccept();
scconfigureBlocking( false );
// Add the new connection to the selector
// 把新连接注册到选择器
//SelectionKey newKey =
scregister( selector, SelectionKeyOP_READ );
itremove();
Systemoutprintln( "Got connection from "+sc );
}else
//读客户端数据的事件,此时有客户端发数据过来,客户端事件
if((keyreadyOps() & SelectionKeyOP_READ)
== SelectionKeyOP_READ){
// 读取数据
SocketChannel sc = (SocketChannel)keychannel();
while(scread(echoBuffer)> 0){ ;}
echoBufferflip();
byte [] content = new byte[echoBufferlimit()];
echoBufferget(content);
String result=new String(content);
doPost(result,sc);
echoBufferclear();
itremove();
}
}catch(Exception e){}
}
}
}
Hashtable table=new Hashtable();
public void doPost(String str,SocketChannel sc){
boolean isok=false;
int index=strindexOf('|');
if(index>=0){ //index>0 有"|"符号,代表登陆,没有表示普通聊天
String name=strsubstring(0,index);
String pswd=strsubstring(index+1);
if(pswd==null){pswd="";}
if(name!=null){
if(pswdequals(PASSWORD) ){
isok=false;
for(int i=0;i<USERNAMElength;i++){
if(USERNAME[i]equals(name)){
isok=true;
break;
}
}
}else{
isok=false;
}
}else{
isok=false;
}
String result="";
if(isok){
result="ACK";
//加入到用户通道列表中
User user=new User();
userpassword=pswd;
username=name;
usersc=sc;
tableput(username, user);
}else{
result="NAK!";
}
ByteBuffer bb = ByteBufferallocate( resultlength() );
bbput(resultgetBytes());
bbflip();
try {
scwrite(bb);
} catch (IOException e) {
eprintStackTrace();
}
bbclear();
}else{ //普通聊天
//遍历所有己注册通道,向所有人发消息(包括发送者自己)
Systemoutprintln("通道数:"+tablesize());
Enumeration en=tableelements();
while(enhasMoreElements()){
User user=(User)ennextElement();
SocketChannel channel=usersc;
if(user!=null && channel!=null && channelisConnected()){
Systemoutprintln("发送:str"+str);
ByteBuffer bb = ByteBufferallocate( strlength() );
bbput(strgetBytes());
bbflip();
try {
channelwrite(bb);
} catch (IOException e) {
eprintStackTrace();
}
bbclear();
}else{
if(user!=null && username!=null){
tableremove(username);
}
}
}
}
}
public class User{
public String name="";
public String password="";
public boolean isLogin=false;
public SocketChannel sc=null;
}
}
客户端:
import javaawtColor;
import javaawtDimension;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javanetSocket;
import javanetUnknownHostException;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJPanel;
import javaxswingJPasswordField;
import javaxswingJTextArea;
import javaxswingJTextField;
public class UserClient implements ActionListener{
JFrame jf;
JPanel jp;
JLabel label_name;
JLabel label_pswd;
JTextField userName;
JButton jb;
JPasswordField paswrd;
JLabel hintStr;
public UserClient (){
jf=new JFrame("XXX 登陆系统");
jp=new JPanel();
jfsetContentPane(jp);
jfsetPreferredSize(new Dimension(350,220));
jpsetPreferredSize(new Dimension(350,220));
jpsetBackground(Colorgray);
label_name=new JLabel();
label_namesetPreferredSize(new Dimension(150,30));
label_namesetText("请输入帐户(数字或英文):");
userName=new JTextField();
userNamesetPreferredSize(new Dimension(150,30));
jpadd(label_name);
jpadd(userName);
label_pswd=new JLabel();
label_pswdsetPreferredSize(new Dimension(150,30));
label_pswdsetText("请输入密码:");
jpadd(label_pswd);
paswrd=new JPasswordField();
paswrdsetPreferredSize(new Dimension(150,30));
jpadd(paswrd);
jb=new JButton("OK");
jbsetPreferredSize(new Dimension(150,30));
jbsetText("确 定");
jbaddActionListener( this);
jpadd(jb);
hintStr=new JLabel();
hintStrsetPreferredSize(new Dimension(210,40));
hintStrsetText("");
hintStrsetForeground(ColorRED);
jpadd(hintStr);
jfpack();
jfsetVisible(true);
jfsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
private String name;
private String pswd;
public void actionPerformed(ActionEvent e) {
if(egetSource()==jb){
name=userNamegetText()trim();
pswd=new String(paswrdgetPassword());
if(pswd==null){
pswd="";
}else{
pswd=pswdtrim();
}
if(name!=null && namelength()>0){
hintStrsetText("正在验证客户端,请稍候");
start();
}
}else
if(egetSource()==clear){//清屏
textsetText("");
}else
if(egetSource()==send){//发送
String msg=thisjtfgetText();
if(msg!=null){
if(msgtrim()length()>0){
msg=" "+name+" said:"+msg+"\r\n";
sendMessage(msg);
jtfsetText("");
}
}
}
}
OutputStream os;
Socket s;
InputStream is;
public void start(){
//建立联网线程
new Thread(new Runnable(){
public void run() {
try {
s=new Socket("127001",5555);
//写
os=sgetOutputStream();
oswrite(namegetBytes());
oswrite('|');//用户名与密码用"|"分隔
oswrite(pswdgetBytes());
osflush();
//读内容
Threadsleep(1000);
is=sgetInputStream();
int len=isavailable();
Systemoutprintln("len:"+len);
byte[] bytes=new byte[len];
isread(bytes);
String resut=new String(bytes);
Systemoutprintln("resut:"+resut);
if(resutequals("ACK")){
hintStrsetText("验证成功,欢迎光临!");
//TODO 这里通过返回结果处理
handleLoginResult();
}else{
paswrdsetText(null);
hintStrsetText("用户名或密码错误,请重新输入");
}
} catch (UnknownHostException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
} catch (InterruptedException e) {
eprintStackTrace();
}finally{
}
}
})start();
}
////////////////////////////////////////////////////////////////////
//处理登陆结果,出新界面
//登陆后新界面的元素组件定义在这里,注意,
//现在随便弄的,你要改漂亮些
////////////////////////////////////////////////////////////////////
JTextArea text;
JButton send;
JButton clear;
JTextArea jtf;
public void handleLoginResult(){
try {
Threadsleep(1000);
} catch (InterruptedException e) {
eprintStackTrace();
}
thisjpremoveAll();//清空所有组件;
jfsetSize(800,600);
jpsetSize(800,600);
jfsetPreferredSize(new Dimension(800,600));
jpsetPreferredSize(new Dimension(800,600));
//加聊天内容框
text=new JTextArea();
textsetBackground(ColorWHITE);
textsetForeground(ColorBLUE);
textsetPreferredSize(new Dimension(750,450));
jpadd(text);
//加发送内容框
jtf=new JTextArea();
jtfsetPreferredSize(new Dimension(750,50));
jpadd(jtf);
//加按钮
send=new JButton("发送");
clear=new JButton("清屏");
sendsetPreferredSize(new Dimension(100,30));
clearsetPreferredSize(new Dimension(100,30));
jpadd(send);
jpadd(clear);
sendaddActionListener(this);
clearaddActionListener(this);
jfpack();
jfrepaint();
//开始读线程
readMessage();
}
//////////////////////////////////////////////////////
//发送消息线程
//////////////////////////////////////////////////////
public void sendMessage(String msg){
final String toSend=msg;
new Thread(
new Runnable(){
public void run(){
if(s==null ){
return;
}
//写
try {
Systemoutprintln("发送:"+toSend);
oswrite(toSendgetBytes());
osflush();
} catch (IOException e) {
eprintStackTrace();
}
}
}
)start();
}
/////////////////////////////////////////////////////////
//读取线程,死循环,不停读取
public boolean isRunning=true;
public void readMessage( ){
new Thread(
new Runnable(){
public void run(){
while(isRunning){
if(s==null ){
return;
}
try {
InputStream is=sgetInputStream();
int len=isavailable();
//Systemoutprintln("len:"+len);
byte[] bytes=new byte[len];
isread(bytes);
String resut=new String(bytes);
//Systemoutprintln("resut:"+resut);
if(resut!=null && resutlength()>0){
Systemoutprintln("收到!!!resut:"+resut);
textappend(resut);
}
} catch (IOException e) {
eprintStackTrace();
}
//睡眠2秒
try {
Threadsleep(2000);
} catch (InterruptedException e) {
eprintStackTrace();
}
}
}
}
)start();
}
public static void main(String[] args) {
new UserClient();
}
}
梦幻西游有诗意的是两个字的名字。 海韵サ月祭天
神兵小邪
风凝メ殇
伤到此为止
加西雅の吹风
血羽长空
十方ぐ惧生"
三刀流
血魂の风
*殇'花落"
狮痕‰
面具人生
′末路悲歌、
Zreo¨郢皇
御血苍穹
幻の醉生
断肠人
米吵住我ぜ
千剑残°
夜幕未殇
の'紫枫
ぺ飞沙°
永远期待
断ぜ月
逝者长空
Royal°迷恋
爱ぜ停机
将天
Royal°MoMo
狮堂光
龙虾龙仙
爱の诚→帅气
。安魂曲
Axelメ尕翔
Je t’aime(你喜欢的一个字)
善解人衣
幻海逆鳞
ギ虎虎爪子
丿sky傲气
て灰飞湮灭
帅酷メ钱多多
趴在你身上
三刀Di魅影
想离开水的鱼
睡在树上的猪
*蝶ル飞*
*虫ル飞*
のn谜。
安琪拉
紫纱舞chanel
°冰若メ妮
忧然
晨露凝香
冰魔°嫣ル
月光∞姿姿
′悲玲
龙之小月
苹果宝儿
mà武笾
冷颜小鱼
Royal°冰倩
*冰ル倩*
倩儿chanel
夕阳め天使
ら冰倩
映雪§若影
″嗳崛幞
≮冰め倩≯
泠月
冰の诺¢允儿
ˇ雪郁柠檬◆
§安妮§
峤磕榷°
Royal°红蝶
しoひe水晶
明dё月儿
倾果い娜娜
粉面小宝贝
雪ぃ乖妍
茵熙
紫灵の镜ル
乱舞°流光
小・布兜
*诗情画意*
ギ猫猫爪子
ミ喵呜
′黛兮雅の、
ら龙舌兰
冷月メ嫣
冷月メ倩
我是小笨猪
流氓の斩情
流氓の媚媚
地主婆
老地主
坏№小猪
花№小猪
花№倩ル
慕容の血
慕容の飘
″残念の
″残血の
″残痕の
の嗖屎缣恰
の嗦笱刻恰
老纳玩双飞
午夜屠猪男
求梦幻西游名字、带有诗意的 ′红尘、轩 ′智能V1+7下第5个 、智能V1 第2个
梦幻诗意名字大全。 本兮韵音。浮沉。苍耳。鸢尾。澜屿。亦蛊。葵弦。涩熏。
收个梦幻西游好听的名字!有诗意的! 风流情断肠 中间再加个符号!!! 风流显得你 不勒略有霸气!! 情字诗句中都有用到 断肠给予衬托!!你觉得怎么样? 若还不行的话!! 可以再详细讨论!!
求梦幻西游四个字带有诗意的名字 夏沫浅雨 浅夏诗韵 烟雨默然 情衫若水 自己加符号。谢谢、
跪求梦幻西游诗情画意的名字 沅′冰冷素颜 沫′墨淡雨画 若′雨系帘茶 想′曾今拥有 念′那段恋情 人′为红颜醉 伊′樱花风月 回′眸醉倾城 莫′背着哭泣 薄′柳陌轻伤 雨′缘情初夏 倾′淡漠飘渺 @可是我的珍藏啊 5555
求个梦幻西游名字 文雅 有诗意 有意境的 带古风 你要求真苛刻,6留
求个比较诗意的梦幻西游5个字的名字。 雨夜葬花魂!谢谢采纳
求梦幻西游带有诗意的家族名字 呵呵!给你个建议!凑齐五个人吧!队长最好是个女的,就叫江雪!千山鸟飞绝,万径人宗灭。孤舟蓑立翁,独钓寒江雪!这是我以前的名字,完全手机手打,望采纳蛤
求梦幻5字超有诗意的名字 '夜奏悲曲 补充: 只能6符号, 两符号+4字比较好看, 夜船岸独醉
欢迎分享,转载请注明来源:品搜搜测评网