unturned服务器怎么物品
重要提示:这些指令只能在单人模式下对自己用,或者联机时主机玩家使用
给玩家物品的指令
敲回车,进入聊天输入栏,输入:
@give [Your Name]/[Item ID]/[Amount Of Items] ←(give后有空格;[]不输入;输入后敲回车执行)
举例: @give playername/254/30
就会直接在playername这个玩家身上出现30个手榴弹!当然,你可以在联机的时候给某个玩家东西哦!
瞬间变出汽车的指令
@vehicle [Your Name]/[Vehicle ID] ←(同上,vehicle后有空格;[]不输入;输入后敲回车执行)
For example: @vehicle Youraustinso/1
将会产生一辆Offroader#1 (随机颜色) 它会出现在空中并且从你的头顶正上方飘下来(具体是砸下来还是飘落不知道,没试过)。 就跟其他车子一样,出现的时候只会有20%~30%的油量,所以你要开的话还得自己加油去。
Item ID's (1-99)
ID 1: Shades
ID 2: Jeans
ID 3: Orange Hoodie
ID 4: Eaglefire
ID 5: Eaglefire Ironsights
ID 6: 556 Magazine
ID 7: 556 Silencer
ID 8: Vertical Grip
ID 9: Daypack
ID 10: Police Vest
ID 11: Bandana
ID 12: Ushanka
ID 13: Canned Beans
ID 14: Water Bottle
ID 15: Medkit
ID 16: Axe
ID 17: 556 Drum
ID 18: Timberwolf
ID 19: Timberwolf Ironsights
ID 20: 860 Magazine
ID 21: 8x Scope
ID 22: Red Dot Sight
ID 23: Tuxedo Pants
ID 24: Tuxedo Shirt
ID 25: Gold Bowtie (Premium Account)
ID 26: Monocle
ID 27: Tophat
ID 28: Gas Can
ID 29: Fortification Barricade
ID 30: Wood Barricade
ID 31: Wood Foundation
ID 32: Wood Doorway
ID 33: Wood Wall
ID 34: Wood Window
ID 35: Maple Roof
ID 36: Wood Pillar
ID 43: Military Ammo Crate
ID 44: Civilian Ammo Box
ID 64: Rope
ID 65: Wire
ID 66: Cloth
ID 67: Metal Scrap
ID 68: Metal Sheet
ID 69: Tape
ID 70: Glue
ID 71: Nails
ID 72: Can
ID 73: Explosives
ID 74: Bricks
ID 75: Chemicals
ID 76: Blowtorch
ID 77: Tomato Soup
ID 78: Chicken Soup
ID 79: Canned Tuna
ID 80: Canned Cola
ID 81: MRE
ID 82: Chips
ID 83: Chocolate Bar
ID 84: Candy Bar
ID 85: Granola Bar
ID 86: Energy Bar
ID 87: Canned Pasta
ID 88: Canned Bacon
ID 89: Canned Beef
ID 90: Canned Sardines
ID 91: Apple Juice
ID 92: Grape Juice
ID 93: Bottled Energy
ID 94: Bottled Coconut
ID 95: Bandage
ID 96: Splint
ID 97: Oakbear
ID 98: Oakbear Magazine
ID 99: Cobra
ID 100: Cobra Magazine
ID 101: Schofield
ID 102: Schofield Ironsights
ID 103: Schofield Clip
ID 104: Fire Axe
ID 105: Baseball Bat
ID 106: Hockey Stick
ID 107: Ace
ID 108: Ace Clip
ID 109: Hawkhound
ID 110: Hawkhound Ironsights
ID 111: Hawkhouse Magazine
ID 112: Bluntforce
ID 113: Shells
ID 114: Bluntforce Ironsights
ID 115: Pink Berry
ID 116: Honeybadger
ID 117: Honeybadger Barrel
ID 118: Honeybadger Ironsights
ID 119: Ranger Ammo Box
ID 120: Kitchen Knife
ID 121: Military Knife
ID 122: Zubekanov
ID 123: Ranger Magazine
ID 124: Zubekanov Ironsights
ID 125: Ranger Drum
ID 126: Nykorev
ID 127: Nykorev Box
ID 128: Nykorev Ironsights
ID 129: Snayperskya
ID 130: Snayperskya Magazine
ID 131: Snayperskya Sight
ID 132: Dragonfang
ID 133: Dragonfang Box
ID 134: Dragonfang Ironsights
ID 135: Golf Club
ID 136: Sledgehammer
ID 137: Butcher Knife
ID 138: Hammer
ID 139: Swiss Knife
ID 140: Butterfly Knife
ID 141: Saw
ID 142: Rake
ID 143: Bipod
ID 144: Ranger Suppressor
ID 145: Horizontal Grip
ID 146: Red Dot Sight
ID 147: Red Halo Sight
ID 148: Red Chevron Scope
ID 149: Military Barrel
ID 150: Military Muzzle
ID 151: Tactical Laser
ID 152: Tactical Light
ID 153: 7x Scope
ID 154: Orange Shirt
ID 155: Orange Tee
ID 156: Orange Parka
ID 157: Purple Hoodie
ID 158: Purple Shirt
ID 159: Purple Tee
ID 160: Purple Parka
ID 161: Green Hoodie
ID 162: Green Parka
ID 163: Green Shirt
ID 164: Green Tee
ID 165: Red Hoodie
ID 166: Red Parka
ID 167: Red Shirt
ID 168: Red Tee
ID 169: Yellow Hoodie
ID 170: Yellow Parka
ID 171: Yellow Shirt
ID 172: Yellow Tee
ID 173: Blue Hoodie
ID 174: Blue Parka
ID 175: Blue Shirt
ID 176: Blue Tee
ID 177: White Hoodie
ID 178: White Parka
ID 179: White Shirt
ID 180: White Tee
ID 181: Black Hoodie
ID 182: Black Parka
ID 183: Black Shirt
ID 184: Black Tee
ID 185: Black Bandana
ID 186: Blue Bandana
ID 187: Green Bandana
ID 188: Orange Hoodie
ID 189: Purple Bandana
ID 190: White Bandana
ID 191: Yellow Bandana
ID 192: Black Toque
ID 193: Blue Toque
ID 194: Green Toque
ID 195: Orange Toque
ID 196: Purple Toque
ID 197: Red Toque
ID 198: White Toque
ID 199: Yellow Toque
Item ID's(200-277)ID 200: Black Daypack
ID 201: Blue Daypack
ID 202: Green Daypack
ID 203: Orange Daypack
ID 204: Purple Daypack
ID 205: White Daypack
ID 206: Yellow Daypack
ID 207: Designer Jeans
ID 208: Cowboy Jeans
ID 209: Cargo Pants
ID 210: Buds
ID 211: Plaid Shirt
ID 212: Kahki Pants
ID 213: Corduroy Pants
ID 214: Trouser Pants
ID 215: Back Sweatervest
ID 216: Blue Sweatervest
ID 217: Green Sweatervest
ID 218: Orange Sweatervest
ID 219: Purple Sweatervest
ID 220: Red Sweatervest
ID 221: White Sweatervest
ID 222: Yellow Sweatervest
ID 223: Police Top
ID 224: Police Bottom
ID 225: Police Cap
ID 226: Khaki Shorts
ID 227: Cargo Shorts
ID 228: Corduroy Shorts
ID 229: Trouser Shorts
ID 230: Chef Top
ID 231: Chef Bottom
ID 232: Construction Top
ID 233: Firefighter Top
ID 234: Firefighter Bottom
ID 235: Ghillie Top
ID 236: Ghillie Bottom
ID 237: Ghillie Hoodie
ID 238: Ghillie Vest
ID 239: Chef Hat
ID 240: Construction Helmet
ID 241: Firefighter Helmet
ID 242: Farmer Top
ID 243: Farmer Bottom
ID 244: Farmer Hat
ID 245: Black Travelpack
ID 246: Blue Travelpack
ID 247: Green Travelpack
ID 248: Orange Travelpack
ID 249: Purple Travelpack
ID 250: Red Travelpack
ID 251: White Travelpack
ID 252: Yellow Travelpack
ID 253: Alicepack
ID 254: Grenade
ID 255: Blue Flare
ID 256: Green Flare
ID 257: Orange Flare
ID 258: Purple Flare
ID 259: Red Flare
ID 260: Yellow Flare
ID 261: Black Smoke
ID 262: Blue Smoke
ID 263: Green Smoke
ID 264: Orange Smoke
ID 265: Purple Smoke
ID 266: Red Smoke
ID 267: White Smoke
ID 268: Yellow Smoke
ID 269: Vaccine
ID 270: Amber Berry
ID 271: Indigo Berry
ID 272: Jade Berry
ID 273: Russet Berry
ID 274: Teal Berry
ID 275: Vermillion Berry
ID 276: Flashlight
ID 277: Carjack
参考资料:
几个常用的操作系统:
1、 DOS操作系统
DOS是英文Disk Operation System的简称,中文为磁盘操作系统,自1981年推出10版发展至今已升级到622版,DOS的界面用字符命令方式操作,只能运行单个任务。
2、 Windows 9x
Windows 9x是一个窗口式图形界面的多任务操作系统,弥补了DOS的种种不足。此后推出的Windows ME(2000年)、Windows XP(2001年)与Windows 9x相比,着重增加和增强了网络互联、数字媒体、娱乐组件、硬件即插即用、系统还原等方面的功能。
3、Windows 98
是面向大众用户的版本,由于是从DOS发展过来的,在安装和运行了大型软件以后,系统会变得不太稳定,经常会死机。
4、windows xp
实在windows nt的技术上发展过来的,由于最初windows nt是为服务器设计的因此稳定性要比windows 98系列操作系统好很多。
5、 Windows NT/ Windows 2000
Windows NT是一个网络型操作系统,它在应用、管理、性能、内联网/互联网服务、通讯及网络集成服务等方面拥有多项其他操作系统无可比拟的优势。因此,它常用于要求严格的商用台式机、工作站和网络服务器。
Windows 2000是在Windows NT内核基础上构建起来的,同时吸收了Windows 9x的优点,因此,Windows 2000更易于使用和管理,可靠性更强,执行更迅速,更稳定和更安全,网络功能更齐全,娱乐效果更佳。
windows服务器最常用的是 windows 2003和windows 2008两种,这两款都被很多大小型企业所用。
6、 UNIX
UNIX操作系统设计是从小型机开始的,从一开始就是一种多用户、多任务的通用操作系统,它为用户提供了一个交互、灵活的操作界面,支持用户之间共享数据,并提供众多的集成的工具以提高用户的工作效率,同时能够移植到不同的硬件平台。
UNIX操作系统的可靠性和稳定性是其他系统所无法比拟的,是公认的最好的Internet服务器操作系统。从某种意义上讲,整个因特网的主干几乎都是建立在运行UNIX的众多机器和网络设备之上的。
7、 Linux
准确的说,Linux应该是符合UNIX规范的一个操作系统,Linix是基于源代码的方式进行开发的。Linux是一套免费使用和自由传播的类似UNIX的操作系统,这个系统是由全世界各地的成千上万的程序员设计和实现的。
用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。
Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的UNIX特性,具有多任务、多用户的能力。而且还包括了文本编辑器、高级语言编译器等应用软件。
它还包括带有多个窗口管理器的X—Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。它是一个功能强大、性能出众、稳定可靠的操作系统。
8、 其他操作系统
如:Mac OS是苹果电脑Macintosh机器的专用操作系统,从本质上将,Mac OS 也是UNIX的一个变体。
、网络设置
设置→配置设置→个人配置设置→操作→新增→网络
帐号:Nokiacom(为了和行货诺基亚其它机型一致)或其他名称
主页:http://wapuni-infocomcn (你可以输入你喜欢的主页)
用户名:(空)
密码:(空)
使用首选接入点:取消
接入点设置:
代理:启动
代理地址: 1000172
代理端口: 80
传输方式:分组数据
传输方式设置:
分组数据接入点: uninet
网络类型: Ipv4
鉴权类型:普通
用户名:(空)
密码:(空)
II、彩信
设置→配置设置→个人配置设置→操作→新增→彩信
帐号:彩信
服务器地址:http://mmscmyunicomcn(必须如此写)
使用首选接入点:取消
接入点设置:
代理:启动
代理地址:1000172
代理端口:80
传输方式:分组数据
传输方式设置:
分组数据接入点:uninet
网络类型:Ipv4
鉴权类型:普通
用户名:(空)
密码:(空)
III、首选接入点
设置→配置设置→个人配置设置→操作→新增→接入点
帐号名称:uninet
接入点设置:
传输方式:分组数据
传输方式设置:
分组数据接入点:uninet
网络类型: Ipv4
鉴权类型:普通
用户名:(空)
密码:(空)
IV、流媒体设置
设置→个人配置设置→操作→新增→流媒体
udp端口范围6790-7170
使用首选接人点:取消
代理:关
传输方式:分组数据
分组数据接人点:uninet
网络类型:Ipv4
鉴权:普通
V、配置设置
在设置→配置设置→首选接入点,选择uninet
在设置→配置设置→预设配置设置,选择个人配置
在设置→配置设置→为全部应用软件启用预设,启用它
VI、分组数据设置
设置→数据连通→分组数据:
1) 分组数据连接:当需要时;
2)分组数据设置-选择-修改接入点
接入点别名:随便起(如:GPRS-CMWAP)
分组数据接入点:uninet(不分大小写)
好了个人设置已经完成,接下来设置彩信接受
功能表 →信息→ 信息设置 →彩信
允许接受彩信→是
配置设置→个人设置
帐号→彩信
问题一:红色英文怎么写 red 红色,红色的
scarlet 绯红色,鲜红的
vermeil 朱红色的
vermilion 朱红色
问题二:这个红色英文的是什么意思啊? 已经在连接该服务器!
Already connecting to this server!
问题三:红色的英文? red
问题四:红色英语怎么读 red 英[red] 美[rd]
adj 红色的; (脸) 涨红的; 烧红的; 红头发的;
n 红色; 红衣服; 红颜料; 红葡萄酒;
[例句]She had all hands with nails painted bright red
她的手很小,指甲涂成了鲜红色。
[其他] 比较级:redder 最高级:reddest 复数:reds
问题五:这红色英文什么意思,谢谢。 对不起,找不到该用户名,密码,地区的链接。
问题六:有"红"音的英文名 英文里h的音和ong的音其实都不多 勉强想了两个
男生名可以较Howard
女生名可以叫Holly
女生还可以取意思叫Scarlett 郝思嘉 也是深丁的意思 比如大美女Scarlett Johansson
问题七:红色用英语怎么说? red或是revolutionary,两个都是红色的意思.
问题八:几种颜色的英文怎么写。比如:红色,**等。 blue蓝色
green绿色
purple紫色
yellow**
red红色
pink粉红色
palegoldenrod 苍麒麟色
palegreen 苍绿色
paleturquoise 苍绿色
palevioletred 苍紫罗蓝色
pansy 紫罗兰色
papayawhip 番木色
peachpuff 桃色
peru 秘鲁色
pink 粉红色
salmon pink 橙红色
baby pink 浅粉红色
shocking pink 鲜粉红色
brown 褐色, 茶色
beige 灰褐色
chocolate 红褐色, 赭石色
sandy beige 浅褐色
camel 驼色
amber 琥珀色
khaki 卡其色
maroon 褐红色
green 绿色
moss green 苔绿色
emerald green 鲜绿色
olive green 橄榄绿
blue 蓝色
turquoise blue 土耳其玉色
cobalt blue 钴蓝色, 艳蓝色
navy blue 藏青色, 深蓝色, 天蓝色
aquamarine blue 蓝绿色
red 红色
scarlet 绯红, 猩红
mauve 紫红
wine red 葡萄酒红
purple, violet 紫色
lavender 淡紫色
lilac 浅紫色
antique violet 古紫色
pansy 紫罗兰色
white 白色
off-white 灰白色
ivory 象牙色
snowy white 雪白色
oyster white 乳白色
gray 灰色
charcoal gray 炭灰色
oky gray 烟灰色
misty gray 雾灰色
plum 杨李色
powderblue 粉蓝色
purple 紫色
red 红色
rosybrown 褐玫瑰红
royalblue 宝蓝色
rubine 宝石红
saddlebrown 重褐色
salmon 鲜肉色
salmon pink 橙红色
sandy beige 浅褐色
sandybrown 沙褐色
sapphire 宝石蓝
scarlet 猩红色
seagreen 海绿色
seashell 海贝色
shocking pink 鲜粉红色
sienna 赭色
silver 银白色
skyblue 天蓝色
slateblue 石蓝色
slategray 灰石色
oky gray 烟灰色
snow 雪白色
springgreen 春绿色
steelblue 钢蓝色
stone 石色
tan 茶色
teal 水鸭色
thistle 蓟色
tomato 番茄色
turquoise 青绿色
turquoise blue 翠蓝色
violet 紫色
wheat 浅**
w川ite 白色
white oke 烟白色
winered 葡萄酒红
yellow **
yellowgreen 黄绿色
beige 米色
black 黑色
brown 咖啡色
cream 雪白
khaki 卡其色
grey 灰色
navy 丈青色
offwhite 灰白色
palegoldenrod 苍麒麟色
palegreen 苍绿色
paleturquoise 苍绿色
palevioletred 苍紫罗蓝色
pansy 紫罗兰色
papayawhip 番木色
peachpuff 桃色
peru 秘鲁色
pink 粉红
plum 杨李色
powderblue 粉蓝色
purple 紫色
red 红色
rosybrown 褐玫瑰红
royalblue >>
问题九:红色的英语怎么写 红色的 red
问题十:[番红色]的英语怎么说的? safranine 番红
pink 桃红色; 淡红色; 粉红色
safranine 藏红
magenta 品红;洋红
marron red 褐红色
crimson lake 梅红; 绯红色
rose pink 玫瑰色; 玫瑰桃红; 淡粉红色
scarlet 猩红色; 绯红
scarlet 猩红; 深红色
crimson 绯红; 深红
carmine 洋红; 洋红色; 胭脂红
vermeil 朱红色
pale pink 苍桃红色; 浅桃红
salmon 橙红色
green lake 青红色
faint red 淡红色
brick red 砖红色
golden red 金红色
vermilion red 朱红色
claret-red 酒红色
问题一:迷你世界怎么把羊毛变色 在头顶上放两沙子,可以卡过去
问题二:迷你世界染料怎么染东西 把染料和要染的物品(一般是羊毛或者玻璃)放在背包,在工具箱可以染。创造模式自己就会提供已经染过的东西
问题三:迷你世界粉色染料怎么使用 粉红色染料(Pink Dye)是通过在工作台上合成一个单位的玫瑰红和一个单位的骨粉而得的第二级染料。
用途
与其他所有染料一样,粉红色染料可以用来
1、对羊使用来给它们的羊毛染色,然后用剪刀剪毛来获得1-3块粉红色羊毛。
2、对狼使用来给它们的项圈染色。
3、与火药结合来合成烟火之星。
4、与烟花火箭结合来制造颜色淡化的效果
5、制作染色的皮革盔甲
6、给羊毛或玻璃或硬化粘土染色
问题四:迷你世界羊毛怎么得 还有一种方法可以不杀死羊而得到羊毛。用两块铁锭成对角线放置合成剪刀,对着羊点右键使用即可。 ps:被剪掉毛的羊很搴苊= = 剪刀还可以剪树叶,用剪刀剪下的树叶可作为建筑材料,特性是略透光。 如果还有什么新遇到的问题请追问,我超喜欢这款游戏也玩了挺久了,真心希望你也可以喜欢上minecraft。
问题五:迷你世界染料怎么用啊,没弄明白 用工具箱,一个羊毛跟一个染料就可以合成相应颜色的羊毛。一个染色体跟八个羊毛可以合成相应颜色的玻璃。
问题六:迷你世界怎么把羊毛弄得可以穿过去 在头顶上放两沙子,可以卡过去
问题七:迷你世界被剪了羊毛的羊多久才能长出羊毛? 2分钟
问题八:迷你世界羊毛怎么做才可以让玩家掉下 在我的世界的服务器当中,只有OP才能有权限踢别人,kick 玩家名字 -踢除玩家 这句指令就可以提出对应的玩家了,不过踢掉之后,几分钟后还可以继续进入。
ban 玩家名字 -封禁玩家 封禁玩家可以选着封禁的时间,也可以选着永久的封禁,不过玩家换。
问题九:迷你世界怎么剪羊毛 还有一种方法可以不杀死羊而得到羊毛。用两块铁锭成对角线放置合成剪刀,对着羊点右键使用即可。 ps:被剪掉毛的羊很搴苊= = 剪刀还可以剪树叶,用剪刀剪下的树叶可作为建筑材料,特性是略透光。 如果还有什么新遇到的问题请追问,我超喜欢这款游戏也玩了挺久了,真心希望你也可以喜欢上minecraft。
问题十:迷你世界的绵羊毛怎么样才能弄成能穿过去? 地图上面找白色的羊
先打开QQ音乐,然后打开这个网址
http://musicqqcom/miniportal/static/album/70/album_70470_1html
把那歌添加进去就可以听啦。
我也是在找这个歌哟
kits工具包相关设置
kit工具包是Essentials的一个重要功能,你可以用它来发放新手礼包,发放奖励甚至用它来做个系统商店都是可以的。
熟练的使用kit相关功能可以使你避免在服务器中再安装不必要的插件。
首先先是kit每个工具包的格式
kits:
<kit name>:
delay: <delay between usage>
items:
- <item number> <amount> <meta>
- <item number> <amount> <meta>
另附上中文config文件内容
kits:
tools:
delay: 10
items:
- 272 1
- 273 1
- 274 1
- 275 1
dtools:
delay: 600
items:
- 278 1 efficiency:1 durability:1 fortune:1 name:&4Giga_Drill_Breaker lore:这钻头是突破天际的钻头
- 277 1 digspeed:3 name:矮人 lore:挖掘|挖掘|挖洞
- 298 1 color:255,255,255 name:白色的帽子 lore:美好的一天,美好的一天
- 279:780 1
notch:
delay: 6000
items:
- 397:3 1 player:Notch
color:
delay: 6000
items:
- 387 1 title:&4书_&9与_&6颜色 author:Essentials lore:游戏内的颜色代码 book:颜色
firework:
delay: 6000
items:
- 401 1 name:愤怒的苦力帕 color:red fade:green type:creeper power:1
- 401 1 name:星空 color:yellow,orange fade:blue type:star effect:trail,twinkle power:1
- 401 2 name:太阳风 color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1
1 delay代表的是领取此工具包的延迟 如果你设置为3600那么这个工具包只能每小时领一次如果你设置为-1 那么这个工具包只能领取一次。
2你可以可以在config中对每个工具包定义他的使用价格如
kit-tools: 100
那么使用tools这个工具包将花费玩家100$
3由以上两个示例我们可以看到kit工具包指令支持几乎mc中所有的道具。不过你也许不知道kit工具包中的道具也是支持变量的如
- 278 1 efficiency:1 durability:1 fortune:1 name:&4Giga_Drill_Breaker lore:{PLAYER}的超级钻石镐
复制代码
效果就是
其余变量可参考 help相关指令设置 中的变量
4kit工具包同样也支持在工具包中包含金钱
设置格式如下
- $500
复制代码
注意 $符号 不要更改。
——以上转载自mcbbs我的世界中文论坛
原帖地址:http://wwwmcbbsnet/forumphpmod=viewthread&tid=290356&page=1#pid5561435
这个帖子会让你知道怎么使用基础插件ESS的,并且会熟练运用里面的功能
上面的代码是插件原代码,用源代码修改插件你需要安装Notepad++软件
用tcp无法达到广播模式效果,这个我已经尝试过很多次,A客户端的信息可以传到B,但B传不到A。而且无法像聊天室那样两个客户端同时交互。
以下是我用tcp做得聊天程序,用tcp大概只能到这效果了。
import javaawt;
import javaawtevent;
import javaapplet;
import javanet;
import javaio;
import javautil;
public class ChatClient extends Applet {
TextField tfName = new TextField(15); //姓名输入文本域
Button btConnect = new Button("连接"); //连接按钮
Button btDisconnect = new Button("断开连接");
TextArea tfChat = new TextArea(8,27); //显示聊天信息文本框
Button btSend = new Button("发送");
TextField tfMessage = new TextField(30); //聊天输入
javaawtList list1 = new javaawtList(9); //显示在线用户信息
Socket socket=null; //连接端口
PrintStream ps=null; //输出流
Listen listen=null; //监听线程
public void init() { //Applet初始化
tfChatsetEditable(false); //设置信息显示框为不可编辑
Panel panel1 = new Panel(); //实例化面板
Panel panel2 = new Panel();
Panel panel3 = new Panel();
tfChatsetBackground(Colorwhite); //设置组件背景颜色
panel1setBackground(Colororange);
panel2setBackground(Colorpink);
panel3setBackground(Colororange);
panel1add(new Label("姓名:")); //增加组件到面板上
panel1add(tfName);
panel1add(btConnect);
panel1add(btDisconnect);
panel2add(tfChat);
panel2add(list1);
panel3add(new Label("聊天信息"));
panel3add(tfMessage);
panel3add(btSend);
setLayout(new BorderLayout()); //设置Applet布局管理器
add(panel1, BorderLayoutNORTH); //增加面板到Applet上
add(panel2, BorderLayoutCENTER);
add(panel3, BorderLayoutSOUTH);
}
public boolean action(Event evt,Object obj){ //事件处理
try{
if(evttarget==btConnect){ //点击连接按钮
if (socket==null){
socket=new Socket(InetAddressgetLocalHost(),5656); //实例化一个套接字
ps=new PrintStream(socketgetOutputStream()); //获取输出流
StringBuffer info=new StringBuffer("INFO: ");
String userinfo=tfNamegetText()+":"+InetAddressgetLocalHost()toString();
psprintln(infoappend(userinfo)); //输出信息
psflush();
listen=new Listen(this,tfNamegetText(),socket); //实例化监听线程
listenstart(); //启动线程
}
}
else if(evttarget==btDisconnect){ //点击断开连接按钮
disconnect(); //调用断开连接方法
}
else if(evttarget==btSend){ //点击发送按钮
if(socket!=null){
StringBuffer msg=new StringBuffer("MSG: ");
String msgtxt=new String(tfMessagegetText());
psprintln(msgappend(tfMessagegetText())); //发送信息
psflush();
}
}
}
catch (Exception ex){
exprintStackTrace(); //输出错误信息
}
return true;
}
public void disconnect() { //断开连接方法
if(socket!=null){
psprintln("QUIT"); //发送信息
psflush();
}
}
class Listen extends Thread{ //监听服务器传送的信息
String name=null; //用户名
BufferedReader reader ; //输入流
PrintStream ps=null; //输出流
Socket socket=null; //本地套接字
ChatClient client=null; //客户端ChatClient实例
public Listen(ChatClient p,String n,Socket s) {
client=p;
name=n;
socket=s;
try{
reader = new BufferedReader(new InputStreamReader(sgetInputStream())); //获取输入流
ps=new PrintStream(sgetOutputStream()); //获取输出流
}
catch(IOException ex){
clientdisconnect(); //出错则断开连接
exprintStackTrace(); //输出错误信息
}
}
public void run(){
String msg=null;
while(socket!=null){
try{
msg=readerreadLine(); //读取服务器端传来信息
}
catch(IOException ex){
clientdisconnect(); //出错则断开连接
exprintStackTrace(); //输出错误信息
}
if (msg==null) { //从服务器传来的信息为空则断开此次连接
clientlisten=null;
clientsocket=null;
clientlist1removeAll();
return;
}
StringTokenizer st=new StringTokenizer(msg,":"); //分解字符串
String keyword=stnextToken();
if(keywordequals("newUser")) { //新用户连接信息
clientlist1removeAll(); //移除原有用户名
while(sthasMoreTokens()) { //取得目前所有聊天室用户名
String str=stnextToken();
clientlist1add(str); //增加到用户列表中
}
}
else if(keywordequals("MSG")) { //聊天信息
String usr=stnextToken();
clienttfChatappend(usr); //增加聊天信息到信息显示框
clienttfChatappend(stnextToken("\0"));
clienttfChatappend("\n");
}
else if(keywordequals("QUIT")) { //断天连接信息
Systemoutprintln("Quit");
try{
clientlisten=null;
clientsocketclose(); //关闭端口
clientsocket=null;
}
catch(IOException e){}
clientlist1removeAll(); //移除用户列表
return;
}
}
}
}
}
import javanet;
import javaio;
import javautil;
public class ChatServer {
static int port=5656; //端口号
static Vector clients=new Vector(10); //存储连接客户信息
static ServerSocket server=null; //建立服务器socket
static Socket socket=null; //套接字连接
public ChatServer() {
try {
Systemerrprintln("Server start");
server=new ServerSocket(port); //初始化服务器套接字
while(true){
socket=serveraccept(); //等待连接
Systemerrprintln(socketgetInetAddress()+"连接\n"); //得到客户机地址
Client client=new Client(socket); //实例化一个客户线程
clientsaddElement(client); //增加客户线程到向量中
clientstart(); //启动线程
notifyChatRoom(); //监视聊天室连接变化
}
}
catch(Exception ex) {
exprintStackTrace(); //输出出错信息
}
}
public static void notifyChatRoom() {
StringBuffer newUser=new StringBuffer("newUser");
for(int i=0;i<clientssize();i++){
Client c=(Client)clientselementAt(i);
newUserappend(":"+cname); //客户端姓名字符串
}
sendClients(newUser); //发送信息到客户端
}
public static void sendClients(StringBuffer message){
for(int i=0;i<clientssize();i++){
Client client=(Client)clientselementAt(i); //分别得到每个客户端的连接
clientsend(message); //发送信息
}
}
public void closeAll() { //关闭所有连接
while(clientssize()>0) { //遍历整个Vector
Client client=(Client)clientsfirstElement(); //得到一个客户端
try{
clientsocketclose(); //关闭端口
}
catch(IOException ex){
exprintStackTrace(); //输出错误信息
}
clientsremoveElement(client); //移出客户端信息
}
}
public static void disconnect(Client c){ //断开客户端
try{
Systemerrprintln(cip+"断开连接\n");
csend(new StringBuffer("QUIT")); //向客户发送断开连接信息
csocket=null; //关闭端口
}
catch(Exception ex){
exprintStackTrace();
}
clientsremoveElement(c); //移出客户端信息
}
public static void main(String[] args) {
new ChatServer(); //实例化一个ChatServer类
}
class Client extends Thread {
Socket socket; //连接端口
String name; //用户姓名
String ip; //客户端IP地址
BufferedReader reader ; //输入流
PrintStream ps; //输出流
public Client(Socket s){
socket=s;
try{
reader = new BufferedReader(new InputStreamReader(sgetInputStream())); //得到输入流
ps=new PrintStream(sgetOutputStream()); //得到输出流
String info=readerreadLine(); //读取接受到的信息
StringTokenizer stinfo=new StringTokenizer(info,":"); //分解字符串
String head=stinfonextToken(); //获取关键字
if(stinfohasMoreTokens())
name=stinfonextToken(); //获取用户名
if(stinfohasMoreTokens())
ip=stinfonextToken(); //获取IP地址
}
catch(IOException ex){
exprintStackTrace();
}
}
public void send(StringBuffer msg) {
psprintln(msg); //输出信息
psflush();
}
public void run(){
while(true){
String line=null;
try{
line=readerreadLine(); //读取数据流
}
catch(IOException ex){
exprintStackTrace(); //输出错误信息
ChatServerdisconnect(this); //断开连接
ChatServernotifyChatRoom(); //更新信息
return;
}
if(line==null){ //客户离开
ChatServerdisconnect(this);
ChatServernotifyChatRoom();
return;
}
StringTokenizer st=new StringTokenizer(line,":"); //分解字符串
String keyword=stnextToken();
if(keywordequals("MSG")){ //发送来的是聊天信息
StringBuffer msg=new StringBuffer("MSG:");
msgappend(name); //在信息上增加用户名
msgappend(stnextToken("\0"));
ChatServersendClients(msg); //发送聊天语句到各个客户端
}
else if(keywordequals("QUIT")){ //退出命令
ChatServerdisconnect(this); //断开连接
ChatServernotifyChatRoom(); //刷新信息
}
}
}
}
}
0条评论