亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

Java中的多人游戲。將客戶端(玩家)連接到其他客戶端創(chuàng)建的游戲

瀏覽:148日期:2024-04-28 13:27:41
如何解決Java中的多人游戲。將客戶端(玩家)連接到其他客戶端創(chuàng)建的游戲?

另一個客戶端由于其防火墻而無法連接到客戶端A。

您可以創(chuàng)建兩種主要的網(wǎng)絡(luò):

服務(wù)器客戶端

點對點

但是客戶端可以將一些數(shù)據(jù)保存到服務(wù)器,服務(wù)器可以將它們發(fā)送給所有客戶端(您不需要點對點網(wǎng)絡(luò)就可以讓客戶端B向客戶端A發(fā)送一些數(shù)據(jù))。

示例:客戶端B將其地圖位置發(fā)送到服務(wù)器,服務(wù)器將數(shù)據(jù)發(fā)送給所有客戶端,因此客戶端A能夠在客戶端B的位置繪制字符圖塊。

要將兩臺PC連接在一起,您需要將端口從服務(wù)器的調(diào)制解調(diào)器轉(zhuǎn)發(fā)到用作服務(wù)器的PC,然后從用作服務(wù)器的PC的防火墻打開該端口。

您還可以在這里看看如何使用python創(chuàng)建一個多人游戲,我舉了一個示例,其中客戶端可以將它們與IRC連接在一起,并可以玩井字游戲(因此您不必管理服務(wù)器))。我在這篇文章的結(jié)尾添加了一個Java示例。

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.socket;import java.util.Date;public class Server{ public static void main(String[] args) throws Exception {ServerSocket listener = new ServerSocket(4000);String line;try{ while (true) {Socket socket = listener.accept();BufferedReader readerChannel = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writerChannel = new BufferedWriter(new OutputStreamWriter(socket.getoutputStream()));try{ writerChannel.write(new Date().toString() + 'nr'); writerChannel.flush(); while ((line = readerChannel.readLine()) != null) {System.out.println(line); }}finally{ socket.close();} }}finally{ listener.close();} }}

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.socket;import java.util.Date;public class Client{ public static void main(String[] args) throws Exception {Socket socket = new Socket('127.0.0.1', 4000);BufferedWriter writerChannel = new BufferedWriter(new OutputStreamWriter(socket.getoutputStream()));BufferedReader readerChannel = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line;writerChannel.write(new Date().toString() + 'nr');writerChannel.flush();while ((line = readerChannel.readLine()) != null){ System.out.println(line);} }}

import javax.net.ssl.SSLSocket;import javax.net.ssl.SSLSocketFactory;public class Client{ public static void main(String[] args) throws Exception {SSLSocketFactory socketBuilder = (SSLSocketFactory) SSLSocketFactory.getDefault();SSLSocket socket = (SSLSocket) socketBuilder.createSocket('127.0.0.1', 4000); }}

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import javax.net.ssl.SSLSocket;import javax.net.ssl.SSLSocketFactory;public class Client{ public static void main(String[] args) throws Exception {SSLSocketFactory socketBuilder = (SSLSocketFactory) SSLSocketFactory.getDefault();SSLSocket socket = (SSLSocket) socketBuilder.createSocket('irc.freenode.net', 6697);BufferedWriter writerChannel = new BufferedWriter(new OutputStreamWriter(socket.getoutputStream()));BufferedReader readerChannel = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line, computerName, nick, login, channel = '#bot', channelPassword = '';long id = 1;computerName = java.net.InetAddress.getLocalHost().getHostName();nick = computerName + '_' + id;login = computerName + '_' + id;writerChannel.write('NICK ' + nick + 'rn'); // Join IRC with a specific NickwriterChannel.write('USER ' + login + ' 8 * :' + login + ' rn'); // Join IRC with a specific UserwriterChannel.flush();while ((line = readerChannel.readLine()) != null){ if (line.indexOf('004') != -1) // If connected {break; } else if (line.indexOf('433') != -1) // If Nick already in use {id++;nick = computerName + '_' + id;login = computerName + '_' + id;writerChannel.write('NICK ' + nick + 'rn');writerChannel.write('USER ' + login + ' 8 * :' + login + ' rn');writerChannel.flush(); }}writerChannel.write('JOIN ' + channel + ' ' + channelPassword + 'rn'); // Join a channelwriterChannel.flush();while ((line = readerChannel.readLine()) != null){ try {line = line.substring(line.indexOf('#'));channel = line.substring(0, line.indexOf(' '));if (line.toLowerCase().startsWith('ping')) // avoid ping time-out{ writerChannel.write('PONG :' + line.substring(5) + 'rn'); writerChannel.flush();}else if (line.toLowerCase().contains('!ping')){ writerChannel.write('PRIVMSG ' + channel + ' :pongrn'); writerChannel.flush();}else if (line.toLowerCase().contains('!join')){ String newChannel = line.substring(line.indexOf('!join') + 6); int stringPosition; if ((stringPosition = newChannel.indexOf(' ')) != -1) {String newPassword = newChannel.substring(stringPosition + 1);newChannel = newChannel.substring(0, stringPosition);writerChannel.write('JOIN ' + newChannel + ' ' + newPassword + 'rn');writerChannel.flush(); } else {writerChannel.write('JOIN ' + newChannel + 'rn');writerChannel.flush(); }}else if (line.toLowerCase().contains('!leave')){ writerChannel.write('PART ' + channel + 'rn'); writerChannel.flush();}else if (line.toLowerCase().contains('!quit')){ writerChannel.write('QUITrn'); writerChannel.flush(); System.exit(0);} } catch (Exception e) { }} }}

我無法為您提供對等網(wǎng)絡(luò)的示例,因為我從未這樣做過。這確實很困難,您必須在互聯(lián)網(wǎng)上進(jìn)行大量研究。

https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html

https://docs.oracle.com/javase/tutorial/networking/sockets/

http://www.oracle.com/technetwork/java/socket-140484.html

您需要一個多線程服務(wù)器來處理許多不同的連接。

提示-我已經(jīng)回答了一些類似的問題。 即使編程語言有時有所不同,我也會為您提供鏈接,但邏輯總是相同的,因此可以為您提供幫助:

在python中創(chuàng)建多人游戲

Xcode Mass Multiplayer(不是您可能在想的)

MMO如何處理真人游戲的每一刻為成千上萬的玩家計算和發(fā)送數(shù)據(jù)包?

解決方法

我正在開發(fā)多人游戲,無法找出如何將其他客戶端連接到所創(chuàng)建的游戲。我的意思是客戶端A創(chuàng)建與服務(wù)器的套接字連接,其他客戶端(A,B…)如何連接到客戶端A?有人可以幫我嗎?

PS我是網(wǎng)絡(luò)編程的新手,因此,如果您可以舉一些例子,我將不勝感激。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 欧美一级毛片一 | 亚洲成a人一区二区三区 | 亚洲国产精久久久久久久 | 国产乱色在线观看 | 色日韩在线 | 国产一区二区三区在线观看影院 | 欧美成人午夜做爰视频在线观看 | 国产欧美成人不卡视频 | 亚洲国内精品 | 2021国内自拍 | 欧美大片一级毛片 | 久久99精品综合国产首页 | 美女视频免费黄色 | 日本人一级毛片免费视频 | 91久久香蕉国产线看观看软件 | 色拍拍噜噜噜aⅴ在线观看 色青青草原桃花久久综合 色婷婷91 | 一级做α爱过程免费视频 | 国产三级在线观看a | 国产高清视频a在线大全 | 特级欧美午夜aa毛片 | 国产成人精品视频播放 | 九九综合九九综合 | a级毛片免费播放 | 不卡的毛片 | 国产做a爰片久久毛片a | 美女视频大全网站免费 | 久久精品视频久久 | 久久亚洲精品国产精品777777 | 中文字幕一区二区视频 | 亚洲欧美一区二区三区在线 | 日本黄色免费大片 | 九九精品99久久久香蕉 | 九九精品视频在线 | 男人精品一线视频在线观看 | 男人在线网址 | 国产日韩精品欧美一区视频 | 国内精品久久影院 | 美女131爽爽爽做爰中文视频 | 欧美一区高清 | 亚洲精品三级 | 国产精品久久久久一区二区 |