Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में सॉकेट के साथ डेटा भेजना और प्राप्त करना

<घंटा/>

यह उदाहरण एंड्रॉइड में सॉकेट के साथ डेटा भेजने और प्राप्त करने के बारे में प्रदर्शित करता है

सर्वर और क्लाइंट प्रोजेक्ट चाहिए

सर्वर

चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।

चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें।

   <टेक्स्ट व्यू एंड्रॉइड:आईडी ="@+ id/tvConnectionStatus" android:layout_width ="match_parent" android:layout_height ="wrap_content" android:layout_below ="@+id/tvPort" android:textAppearance ="@s tyle/Base.TextAppearance.AppCompat.Medium" />   

चरण 3 - निम्न कोड को src/MainActivity.java

में जोड़ें <पूर्व>पैकेज com.server.myapplication.server;import android.annotation.SuppressLint;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.os.Bundle;import android.support.v7 .app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java. io.InputStreamReader; आयात java.io.PrintWriter; आयात java.net.InetAddress; आयात java.net.ServerSocket; आयात java.net.Socket; आयात java.net.UnknownHostException; java.nio.ByteBuffer आयात करें; java.nio आयात करें .ByteOrder;@SuppressLint("SetTextI18n") Public Class MainActivity, AppCompatActivity { ServerSocket serverSocket; थ्रेड थ्रेड1 =अशक्त; टेक्स्ट व्यू टीवीआईपी, टीवीपोर्ट; टेक्स्ट व्यू टीवी संदेश; संपादन टेक्स्ट और संदेश; बटन btnभेजें; सार्वजनिक स्थैतिक स्ट्रिंग SERVER_IP =""; सार्वजनिक स्थैतिक अंतिम int SERVER_PORT =8080; स्ट्रिंग संदेश; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); टीवीआईपी =FindViewById (R.id.tvIP); टीवीपोर्ट =FindViewById (R.id.tvPort); tvMessages =findViewById (R.id.tvMessages); etMessage =findViewById (R.id.etMessage); btnSend =findViewById (R.id.btnSend); कोशिश करें {SERVER_IP =getLocalIpAddress (); } कैच (अज्ञातहोस्ट एक्सेप्शन ई) { ई.प्रिंटस्टैकट्रेस (); } थ्रेड 1 =नया थ्रेड (नया थ्रेड 1 ()); थ्रेड1.स्टार्ट (); btnSend.setOnClickListener (नया दृश्य। OnClickListener () {@ ओवरराइड सार्वजनिक शून्य पर क्लिक करें (देखें v) { संदेश =etMessage.getText ()। toString ()। ट्रिम (); अगर (!message.isEmpty ()) {नया धागा ( नया थ्रेड 3 (संदेश))। प्रारंभ (); }}}); } निजी स्ट्रिंग getLocalIpAddress () UnknownHostException फेंकता है {WifiManager wifiManager =(WifiManager) getApplicationContext ()। getSystemService (WIFI_SERVICE); वाईफ़ाई प्रबंधक पर जोर दें! =शून्य; WifiInfo wifiInfo =wifiManager.getConnectionInfo (); int ipInt =wifiInfo.getIpAddress (); वापसी InetAddress.getByAddress(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(ipInt).array()).getHostAddress(); } निजी PrintWriter आउटपुट; निजी BufferedReader इनपुट; कक्षा थ्रेड 1 रननेबल लागू करता है {@ ओवरराइड सार्वजनिक शून्य रन() {सॉकेट सॉकेट; कोशिश करें {सर्वर सॉकेट =नया सर्वर सॉकेट (SERVER_PORT); runOnUiThread (नया रननेबल () {@ ओवरराइड सार्वजनिक शून्य रन () { tvMessages.setText ("कनेक्ट नहीं है"); tvIP.setText ("IP:" + SERVER_IP); tvPort.setText ("पोर्ट:" + String.valueOf ( सर्वर पोर्ट)); } }); कोशिश करें {सॉकेट =सर्वर सॉकेट। स्वीकार करें (); आउटपुट =नया प्रिंटवाइटर (सॉकेट.गेटऑटपुटस्ट्रीम ()); इनपुट =नया BufferedReader (नया इनपुटस्ट्रीम रीडर (सॉकेट.getInputStream ())); runOnUiThread (नया रननेबल () {@ ओवरराइड सार्वजनिक शून्य रन () {tvMessages.setText ("कनेक्टेड \ n"); }}); नया थ्रेड (नया थ्रेड 2 ())। प्रारंभ (); } कैच (IOException e) { e.printStackTrace (); } } कैच (IOException e) { e.printStackTrace (); } } } निजी वर्ग थ्रेड 2 रननेबल लागू करता है {@ ओवरराइड सार्वजनिक शून्य रन () {जबकि (सत्य) {कोशिश करें {अंतिम स्ट्रिंग संदेश =इनपुट। रीडलाइन (); अगर (संदेश! =शून्य) {runOnUiThread (नया रननेबल () {@ ओवरराइड सार्वजनिक शून्य रन () { tvMessages.append ("क्लाइंट:" + संदेश + "\ n"); }}); } और {थ्रेड 1 =नया थ्रेड (नया थ्रेड 1 ()); थ्रेड1.स्टार्ट (); वापसी; } } कैच (IOException e) { e.printStackTrace (); } } } } क्लास थ्रेड3 रननेबल को लागू करता है {निजी स्ट्रिंग संदेश; थ्रेड 3 (स्ट्रिंग संदेश) {यह संदेश =संदेश; } @ ओवरराइड सार्वजनिक शून्य रन () {output.write (संदेश); आउटपुट। फ्लश (); runOnUiThread (नया रननेबल () {@ ओवरराइड सार्वजनिक शून्य रन () { tvMessages.append ("सर्वर:" + संदेश + "\ n"); etMessage.setText (""); }}); } }}

चरण 4 - निम्नलिखित कोड को androidManifest.xml में जोड़ें

    <एप्लिकेशन android:allowBackup ="true" android:icon ="@mipmap/ic_launcher" android:label ="@string/app_name" android:roundIcon ="@mipmap/ic_launcher_round" android:supportsRtl ="true" android:theme ="@style/AppTheme"> <गतिविधि android:name =".MainActivity" android:label ="सर्वर"> <इरादे-फ़िल्टर> <कार्रवाई android:name ="android.intent.action.MAIN" /> <श्रेणी android:name ="android.intent.category.LAUNCHER" />   

ग्राहक

चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।

चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें।

   <बटन एंड्रॉइड:आईडी ="@ + आईडी /btnConnect" android:layout_width ="match_parent" android:layout_height ="wrap_content" android:layout_below ="@+id/etPort" android:layout_gravity ="center" android:layout_marginT op ="16dp" android:text ="सर्वर से कनेक्ट करें" />   

चरण 3 - निम्न कोड को res/layout/MainActivity.java में जोड़ें।

<पूर्व>पैकेज com.client.myapplication.client;import android.annotation.SuppressLint;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;आयात android.widget.EditText;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket; @SuppressLint("SetTextI18n")सार्वजनिक वर्ग MainActivity AppCompatActivity {Thread Thread1 =null; एडिटटेक्स्ट एटआईपी, एटपोर्ट; टेक्स्ट व्यू टीवी संदेश; संपादन टेक्स्ट और संदेश; बटन btnभेजें; स्ट्रिंग SERVER_IP; इंट सर्वर_पोर्ट; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); etIP =findViewById (R.id.etIP); etPort =findViewById (R.id.etPort); tvMessages =findViewById (R.id.tvMessages); etMessage =findViewById (R.id.etMessage); btnSend =findViewById (R.id.btnSend); बटन btnConnect =findViewById (R.id.btnConnect); btnConnect.setOnClickListener (नया दृश्य। OnClickListener () {@ ओवरराइड सार्वजनिक शून्य पर क्लिक करें (देखें v) { tvMessages.setText (""); SERVER_IP =etIP.getText ()। toString ()। ट्रिम (); SERVER_PORT =Integer.parseInt (etPort.getText ()। toString ()। ट्रिम ()); थ्रेड 1 =नया थ्रेड (नया थ्रेड 1 ()); थ्रेड 1.स्टार्ट (); }}); btnSend.setOnClickListener (नया दृश्य। OnClickListener () {@ ओवरराइड सार्वजनिक शून्य पर क्लिक करें (देखें v) {स्ट्रिंग संदेश =etMessage.getText ()। (नया थ्रेड 3 (संदेश))। प्रारंभ (); } } }); } निजी PrintWriter आउटपुट; निजी BufferedReader इनपुट; क्लास थ्रेड 1 रननेबल लागू करता है {सार्वजनिक शून्य रन () {सॉकेट सॉकेट; कोशिश करें {सॉकेट =नया सॉकेट (SERVER_IP, SERVER_PORT); आउटपुट =नया प्रिंटवाइटर (सॉकेट.गेटऑटपुटस्ट्रीम ()); इनपुट =नया BufferedReader (नया इनपुटस्ट्रीम रीडर (सॉकेट.getInputStream ())); runOnUiThread (नया रननेबल () {@ ओवरराइड सार्वजनिक शून्य रन () {tvMessages.setText ("कनेक्टेड \ n"); }}); नया थ्रेड (नया थ्रेड 2 ())। प्रारंभ (); } कैच (IOException e) { e.printStackTrace (); } } } क्लास थ्रेड2 रननेबल को लागू करता है {@Override public void run() { जबकि (true) { try { final String message =input.readLine(); अगर (संदेश! =शून्य) {runOnUiThread (नया रननेबल () {@ ओवरराइड सार्वजनिक शून्य रन () { tvMessages.append ("सर्वर:" + संदेश + "\ n"); }}); } और {थ्रेड 1 =नया थ्रेड (नया थ्रेड 1 ()); थ्रेड1.स्टार्ट (); वापसी; } } कैच (IOException e) { e.printStackTrace (); } } } } क्लास थ्रेड3 रननेबल को लागू करता है {निजी स्ट्रिंग संदेश; थ्रेड 3 (स्ट्रिंग संदेश) {यह संदेश =संदेश; } @ ओवरराइड सार्वजनिक शून्य रन () {output.write (संदेश); आउटपुट। फ्लश (); runOnUiThread (नया रननेबल () {@ ओवरराइड सार्वजनिक शून्य रन () { tvMessages.append ("क्लाइंट:" + संदेश + "\ n"); etMessage.setText (""); }}); } }}

चरण 4 - निम्नलिखित कोड को androidManifest.xml में जोड़ें

<मेनिफेस्ट xmlns:android ="https://schemas.android.com/apk/res/android" package ="com.client. myapplication.client"> <उपयोग-अनुमति android:name ="android.permission.INTERNET" />   <गतिविधि एंड्रॉइड:नाम ="com.client.myapplication.client.MainActivity" एंड्रॉइड:लेबल ="क्लाइंट"> <इरादे-फ़िल्टर> <कार्रवाई एंड्रॉइड:नाम ="android.intent.action.MAIN" /> <श्रेणी एंड्रॉइड:नाम =" android.intent.category.LAUNCHER" />   

आइए आपके सर्वर और क्लाइंट एप्लिकेशन दोनों को चलाने का प्रयास करें। मुझे लगता है कि आपने अपने वास्तविक Android मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फाइलों में से एक को खोलें और रन पर क्लिक करें टूलबार से एंड्रॉइड में सॉकेट के साथ डेटा भेजना और प्राप्त करना आइकन। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -

सर्वर:-

एंड्रॉइड में सॉकेट के साथ डेटा भेजना और प्राप्त करना

ग्राहक:-

एंड्रॉइड में सॉकेट के साथ डेटा भेजना और प्राप्त करना

सर्वर:-

एंड्रॉइड में सॉकेट के साथ डेटा भेजना और प्राप्त करना


  1. वाईफाई फाइल ट्रांसफर के साथ एंड्रॉइड और पीसी के बीच फाइल ट्रांसफर करें

    नेटवर्क पर अपने एंड्रॉइड स्मार्टफोन या टैबलेट के बीच फाइल साझा करना एक बड़ा समय बचाने वाला है। इस लेख में मैं आपको इसके बारे में बताऊंगा। कोई भी USB के माध्यम से फ़ाइलें स्थानांतरित कर सकता है, लेकिन वायरलेस तरीके से कार्य करना बहुत आसान है। ऐसा करने के लिए एकमात्र शर्त यह है कि दोनों डिवाइस एक ही न

  1. Android पर टेक्स्ट भेजने या प्राप्त करने में समस्या ठीक करें

    आज के दिन और युग में, एसएमएस सेवा अप्रचलित और अतीत से एक अवशेष महसूस कर सकती है, फिर भी यह पाठ के माध्यम से संचार करने का सबसे विश्वसनीय तरीका है। लेकिन किसी भी अन्य प्रकार की तकनीक की तरह, इसकी अपनी समस्याओं का एक सेट है जिसे हल करने की आवश्यकता है ताकि यह विश्वसनीय और कुशल हो। संदेश प्राप्त करने य

  1. Android पर डेटा उपयोग को कैसे प्रबंधित और ट्रैक करें

    हर बार जब आपके पास किसी प्रकार की कोई क्वेरी होती है, तो आप अपने स्मार्टफ़ोन को अनलॉक करते हैं और उत्तर या समाधान के लिए Google की ओर मुड़ते हैं। और इतना ही नहीं, हम अपने स्मार्टफोन का उपयोग ऑनलाइन लेनदेन करने, वीडियो कॉल के माध्यम से दोस्तों के साथ संवाद करने, कैब बुक करने, ऑनलाइन खरीदारी करने या अ