Tcpklient – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Tcpklient  – .NET – Fórum – Programujte.comTcpklient – .NET – Fórum – Programujte.com

 

Premi
~ Anonymní uživatel
7 příspěvků
10. 9. 2010   #1
-
0
-

Ahoj mam dotaz ohledne odesilani dat jinemu pc mam takovy kod, kde se snazim posilat jenom 2 souradnice tlacitka jakmile kliknu na tlacitko, jenze nevim jak udelat aby se obe x,y souradnice odeslaly najednou a mohl je prijmout tak abych je mohl rozlisit nebot kdyz je odelsu najednou tak pak prijmu jeden string coz je mi na nic protoze mi prijde jedno cislo.A posilani 2 cisel zvlast asi neni nejrychlejsi.
A jeste dotaz jde nejak udelat ze bych vytvoreni spojeni klient = new TcpClient(ip.Text, Int32.Parse(port.Text)); udelal pouze jednou a pak bych jenom odesilal data, nebo vyzaduje pri kazdem odesilani dat vytvoreni spojeni. Diky za odpoved



public void button_Click(object sender, EventArgs e)
{
MyButton send = (MyButton)sender;
polebtn[send.X, send.Y].BackColor = Color.Black;
string xx = send.X.ToString();
string yy = send.Y.ToString();
pripoj(yy);
pripoj(xx);



}
void pripoj(string xx)
{

klient = new TcpClient(ip.Text, Int32.Parse(port.Text));

ns = klient.GetStream();
ns1 = klient.GetStream();

Byte[] x;




x = System.Text.Encoding.ASCII.GetBytes(xx);


ns.Write(x, 0, x.Length);


// klient.Close();
// ns.Close();
}
}

Nahlásit jako SPAM
IP: 77.48.244.–
liborb
~ Redaktor
+18
Guru
10. 9. 2010   #2
-
0
-

Jednak je zvláštní posílat celočíselné souřadnice jako řetězec, ale budiž. A když už to máš jako řetězce, tak je normálně spoj, mezi ně si dej třeba čárku :) a pošli to jako jeden řetězec, ne?

Nahlásit jako SPAM
IP: 85.207.166.–
Premi
~ Anonymní uživatel
7 příspěvků
10. 9. 2010   #3
-
0
-

To liborb : ale tak abych mohl prevest ty souradnice na byte tak ta metoda nabizi pouze string a pole charu. A vsak ja ty souradnice neposilam jako string ale pole bajtu.

Nahlásit jako SPAM
IP: 77.48.244.–
Premi
~ Anonymní uživatel
7 příspěvků
10. 9. 2010   #4
-
0
-

To liborb : no diky za to rozdeleni už to staci pouze jednou odeslat ale jak je to stim spojenim
klient = new TcpClient(ip.Text, Int32.Parse(port.Text)); musim ho pokazde vytvaret znovu protoze to zabira docela dost casu a pak to neni plynule??

Nahlásit jako SPAM
IP: 77.48.244.–
liborb
~ Redaktor
+18
Guru
10. 9. 2010   #5
-
0
-

Jednak ... řetězec je taky pole bajtů (nebo dvojbajtů) ... druhak ... pole bajtů k odeslání lze vytvořit i z číselných souřadnic např. takto:

// souradnice

UInt32 x = 10;
UInt32 y = 15;
// data k odeslani
byte [] data = new byte[8];

Buffer.BlockCopy(BitConverter.GetBytes(x), 0, data, 0, 4);
Buffer.BlockCopy(BitConverter.GetBytes(y), 0, data, 4, 4);


A spojení si samozřejmě nemusíš vytvářet pokaždé. Dokonce to jde i proti principu TCP spojení, kde by si měl držet spojení až do chvíli, kdy upadne nebo ho už nepotřebuješ. Takže v nějaké inicializaci se jednou připoj, proměnné udělej jako členské a máš to.

Nahlásit jako SPAM
IP: 85.207.166.–
Premi
~ Anonymní uživatel
7 příspěvků
10. 9. 2010   #6
-
0
-

To liborb : ja sem zksuil vytvrorit tlacitko, kde udelam spojeni, ale odešle se pouze jedna souřadnice x, y a další už ne...



private void button1_Click(object sender, EventArgs e)
{
klient = new TcpClient(ip.Text, Int32.Parse(port.Text));
}

Nahlásit jako SPAM
IP: 77.48.244.–
liborb
~ Redaktor
+18
Guru
10. 9. 2010   #7
-
0
-
Nahlásit jako SPAM
IP: 85.207.166.–
silent0
Stálý člen
10. 9. 2010   #8
-
0
-

Jen otakzka OT, ohledne komponent je mozne je najit v VS 2010? ... prave nikde je tam nevidim ani v choose item ..

Nahlásit jako SPAM
IP: 90.182.248.–
C#
liborb
~ Redaktor
+18
Guru
10. 9. 2010   #9
-
0
-

To silent : Musím přiznat, že v podstatě ani netuším, na co se ptáš. Pokud hledáš komponenty jako Button, tak ty jsou v ToolBoxu.

Nahlásit jako SPAM
IP: 195.189.142.–
silent0
Stálý člen
10. 9. 2010   #10
-
0
-

ne hledam tu TCPClient/Server ..nj nevsiml jsem si ze jsem tam nenapsal o jakou komponentu se jedna ...

Nahlásit jako SPAM
IP: 90.182.248.–
C#
liborb
~ Redaktor
+18
Guru
10. 9. 2010   #11
-
0
-

Tak to jsou naštěstí jen třídy a nikoli komponenty.

Nahlásit jako SPAM
IP: 195.189.142.–
Premi
~ Anonymní uživatel
7 příspěvků
17. 9. 2010   #12
-
0
-

tak ja tady dam ten projekt protoze mi to porad dela to same tzn. ze jakmile dam klient = new TcpClient(ip.Text, Int32.Pars(port.Text)); na nejake tlacitko ktere spustim tak odeslu pouze prvni souradnice a dale uz ne... a ted nevim co s tim



using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.IO;
namespace GAME
{
public partial class Form1 : Form
{
public static int a = 20;
public static int b = 20;

private MyButton button;
public Form1()
{
InitializeComponent();
groupBox1.Size = new Size(300, 300);



ukaz();
}
private MyButton[,] polebtn = new MyButton[a, b];

public void ukaz()
{

int c = 0;
int d = 0;

for (int i = 0; i < 300; i += 15)
{
for (int k = 0; k < 300; k += 15)
{
button = new MyButton();

button.BackColor = Color.White;
button.Location = new Point(k, i);
button.Size = new Size(15, 15);
button.X = c;
button.Y = d;
polebtn[c, d] = button;
button.Click += new EventHandler(button_Click);
groupBox1.Controls.Add(button);
c++;
}
c = 0;
d++;
}


}

private TcpClient klient = null;
private NetworkStream ns;

public void button_Click(object sender, EventArgs e)
{
MyButton send = (MyButton)sender;
polebtn[send.X, send.Y].BackColor = Color.Black;
string xx = send.X.ToString();
string yy = send.Y.ToString();
pripoj(xx, yy);




}
void pripoj(string xx, string yy)
{



ns = klient.GetStream();


Byte[] x;




x = System.Text.Encoding.ASCII.GetBytes(xx + "," + yy);


ns.Write(x, 0, x.Length);


// klient.Close();
//ns.Close();
}

private void button1_Click(object sender, EventArgs e)
{
klient = new TcpClient(ip.Text, Int32.Parse(port.Text));//zde nevim co s tim
}
}


}

a prijimac


using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using GAME;
using System.Threading;
namespace PRIJIMAC
{
public partial class Form1 : Form
{
private ArrayList ooo = new ArrayList();
private Thread proc;
/// <summary>
public static int a = 20;
public static int b = 20;

private MyButton button;

private MyButton[,] polebtn = new MyButton[a, b];

public void ukaz()
{

int c = 0;
int d = 0;

for (int i = 0; i < 300; i += 15)
{
for (int k = 0; k < 300; k += 15)
{
button = new MyButton();

button.BackColor = Color.White;
button.Location = new Point(k, i);
button.Size = new Size(15, 15);
button.X = c;
button.Y = d;
polebtn[c, d] = button;
//button.Click += new EventHandler(button_Click);
groupBox1.Controls.Add(button);
c++;
}
c = 0;
d++;
}


}
/// </summary>
///
private TcpListener list;
private TcpClient klient;
public Form1()
{
InitializeComponent();
ukaz();
IPAddress ip = IPAddress.Parse("127.0.0.1");
list = new TcpListener(ip, 2112);
groupBox1.Size = new Size(300, 300);
proc = new Thread(new ThreadStart(slys));
proc.Start();

}
private int i = 0;
private string f, g;
private string xxx;
public void slys()
{



list.Start();



while (true)
{
string[] words;
klient = list.AcceptTcpClient();
NetworkStream str = klient.GetStream();
Byte[] data = new Byte[10];

str.Read(data, 0, data.Length);
xxx = System.Text.Encoding.ASCII.GetString(data);
words = xxx.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);


// polebtn[System.Convert.ToInt32(g), System.Convert.ToInt32(f)].BackColor = Color.Black;
polebtn[Int32.Parse(words[0]), Int32.Parse(words[1])].BackColor = Color.Black;

// proc.Start();
//list.Stop();
//klient.Close();
//str.Close();

}


}
}
}

Nahlásit jako SPAM
IP: 77.48.244.–
KIIV
~ Moderátor
+43
God of flame
17. 9. 2010   #13
-
0
-

jak by to taky mohlo neco dalsiho precist, kdyz po precteni skocis zase na AcceptTcpClient....

bude to chtit trochu nastudovat jak se to dela doopravdy.. a hlavne co vubec delaj metody co si pouzil..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Premi
~ Anonymní uživatel
7 příspěvků
17. 9. 2010   #14
-
0
-

To KIIV : diky ono ja vim co ty metody delaji ale ja sem sem se zameril pouze na ten soubor s tim Tcpklient a ten druhy sem vubec nezkoumal

Nahlásit jako SPAM
IP: 77.48.244.–
KIIV
~ Moderátor
+43
God of flame
17. 9. 2010   #15
-
0
-

no v prvnim je taky par drobnosti..
pripoj prejmenuj na odesli.. (formalni drobnost ale opravdu se tam uz vubec nepripojujes)
udelej si i tlacitko na "odpojeni"
u tlacitka pripojeni si zkontroluj, zda jiz neni otevreny socket
musis taky kontrolovat jestli je spojeni otevrene nez na nej neco budes chtit posilat
taktez zkontrolovat, zda se odeslalo uspesne
destruktor by mel zkontrolovat pripojeni a pripadne odpojit

u druheho kazdopadne accept a po nem az cyklus nacitani dat.. + kontroly spojeni ..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Premi
~ Anonymní uživatel
7 příspěvků
17. 9. 2010   #16
-
0
-

To KIIV : diky zkusim to nejak udelat, kdyz tak napisu

Nahlásit jako SPAM
IP: 77.48.244.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 44 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý