Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via TCP/IP

Postades av 2004-09-13 14:30:51 - Anders Nygren, i forum Erbjud/sök uppdrag & tjänster, Tråden har 20 Kommentarer och lästs av 1584 personer

Hej,

Jag behöver hämta data ifrån tredje part till en applikation jag bygger. Denna data ska hämtas via TCP/IP på en viss port genom att skicka en textsträng och få en likadan tillbaka. Kan denna kod, som jag hittat på nätet, fungera?

-----
Imports System.Net.Sockets
Imports System.Text
Class TCPCli
Shared Sub Main()

Dim tcpClient As New System.Net.Sockets.TcpClient()
tcpClient.Connect("127.0.0.1", 8000)
Dim networkStream As NetworkStream = tcpClient.GetStream()
If networkStream.CanWrite And networkStream.CanRead Then
' Do a simple write.
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there")
networkStream.Write(sendBytes, 0, sendBytes.Length)
' Read the NetworkStream into a byte buffer.
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
' Output the data received from the host to the console.
Dim returndata As String = Encoding.ASCII.GetString(bytes)
Console.WriteLine(("Host returned: " + returndata))
Else
If Not networkStream.CanRead Then
Console.WriteLine("cannot not write data to this stream")
tcpClient.Close()
Else
If Not networkStream.CanWrite Then
Console.WriteLine("cannot read data from this stream")
tcpClient.Close()
End If
End If
End If
' pause so user can view the console output
Console.ReadLine()
End Sub
End Class


Svara

Sv: Fungerar denna kod för kommunikation via TCP/IP

Postades av 2004-09-13 14:33:23 - Patrik Dahlén

Har du provat?


Svara

Sv: Fungerar denna kod för kommunikation via TCP/IP

Postades av 2004-09-13 15:45:13 - Anders Nygren

Yes, jag har provat. Saken är den att jag inte alls kan asp.net. Jag har förstått att det är i princip omöjlig, eller åtminstone väldigt tidskrävande, att utföra denna typ av kommunikation i klassisk ASP. Därför har jag nu börjat rota runt bland asp.net scripts där det verkar vara piece-of-cake.

Jag får ett syntax error direkt på rad "Imports System.Net.Sockets". Jag har helt enkelt bara lagt koden ovan i en .aspx-fil och inlett filen med

<% @ Page Language = "VB" %>

Jag har sedan koden ovan inom <%%>-taggar.

Kanske är det strukturen på själva aspx-filen som är fel?

Tacksam för all hjälp då jag är under enorm tidspress.

Anders


Svara

Sv: Fungerar denna kod för kommunikation via TCP/IP

Postades av 2004-09-13 15:56:55 - Mikael Åhlén

Så här ska du skriva om du INTE använder code-behind.

<%@ Page Language = "VB" %>
<%@ Import Namespace="System.Net.Sockets" %>
<%@ Import Namespace="System.Text" %>

<script runat="server">
Class TCPCli 
    Shared Sub Main() 

        Dim tcpClient As New System.Net.Sockets.TcpClient() 
        tcpClient.Connect("127.0.0.1", 8000) 
        Dim networkStream As NetworkStream = tcpClient.GetStream() 
        If networkStream.CanWrite And networkStream.CanRead Then 
            ' Do a simple write. 
            Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there") 
            networkStream.Write(sendBytes, 0, sendBytes.Length) 
            ' Read the NetworkStream into a byte buffer. 
            Dim bytes(tcpClient.ReceiveBufferSize) As Byte 
            networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 
            ' Output the data received from the host to the console. 
            Dim returndata As String = Encoding.ASCII.GetString(bytes) 
            Console.WriteLine(("Host returned: " + returndata)) 
        Else 
            If Not networkStream.CanRead Then 
                Console.WriteLine("cannot not write data to this stream") 
                tcpClient.Close() 
            Else 
                If Not networkStream.CanWrite Then 
                    Console.WriteLine("cannot read data from this stream") 
                    tcpClient.Close() 
                End If 
            End If 
        End If 
        ' pause so user can view the console output 
        Console.ReadLine() 
    End Sub 
End Class
</script>


/r
Det här ser väl ut som win forms?


Svara

Sv: Fungerar denna kod för kommunikation via TCP/IP

Postades av 2004-09-13 17:08:00 - Anders Nygren

Micke! Nu slipper jag felmeddelanden och koden verkar köras korrekt. Dock får jag inget svar ifrån servern jag anropar. De kan heller inte se på sin sida att jag överhuvudtaget loggat in..

Jag har angett rätt IP-nummer och port enligt nedan:

tcpClient.Connect("217.151.XXX.XXX", XXXX)

Jag skickar min textsträng enligt nedan, kommandona ska separeras med TAB och LF tecken så detta måste väl vara rätt:

Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("QUERY" & VbTab & "LOGIN" & vBTab & "PASS" & VblF & "TELENUMMER" & VbTab & "081234567" & Vblf & "ENDQUERY" & VbLf)


Nu borde jag få tillbaka ett svar med namn och adress på telefonnumret som är angivet, men det händer ingenting. Visst är det väl meningen att raden nedan ska skriva ut det svar servern gett:

Dim returndata As String = Encoding.ASCII.GetString(bytes)
Console.WriteLine(("Host returned: " + returndata))

Men som sagt, inget resultat.

Eftersom jag är i akut behov av hjälp med detta så säger jag att det är värt 1000 kronor för mig att få scriptet att fungera. Det borde inte handla om mer än någon timmes jobb för någon som vet vad han/hon pysslar med?

Svara i denna tråd ASAP om intresse finns.

Vänligen
Anders


Svara

Sv: Fungerar denna kod för kommunikation via TCP/IP

Postades av 2004-09-13 17:37:41 - Mikael Åhlén

Om du har möjligheten, testa koden som en Win forms. (jag tror det kommer funka klockrent då).

/m


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via TCP/I

Postades av 2004-09-13 17:49:10 - Johan Normén

Anders.

På vilket sätt skall du hämta datan? hur presenteras den? vart finns den?
Måste du gå med Socket? skall du in på en FTP, en Websida o göra svcreenscrape?
Gå mot någon annan tjänst via annan port med annat protokoll än FTP, HTTP, etc?

Mvh Johan


Svara

Sv: Fungerar denna kod för kommunikation via TCP/IP

Postades av 2004-09-13 17:55:40 - Anders Nygren

Hej igen Micke,

Som jag skrev ovan kan jag ingenting om asp.net utan är tvungen att använda det eftersom det jag vill göra inte verkar funka med vanlig ASP. I alla fall inte utan en massa utvecklingsarbete.

Således, jag har inte en aning om vad Win forms är :-) Hjälp mig gärna

Anders


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via TCP/

Postades av 2004-09-13 17:57:36 - Anders Nygren

Johan,

Utdrag ifrån det API jag fått ifrån leverantören:

Klienten ansluter sig mot Teleadress server med socket mot TCP/IP adress och port, ställer
sin fråga och får sitt svar. Flera frågor och svar kan hanteras sekventiellt vid en och samma
uppkoppling.

Varje fråga kan innehålla en eller flera frågeparametrar, se protokollbeskrivning 4.1 Fråga.
Svaren innehåller mer eller mindre information beroende på vilka frågeparametrar som
använts, se protokollbeskrivning 4.2 Svar.

Överföring av kommandon, parametrar och information sker i klartext ANSI ASCII med data
uppdelat med TAB och LF tecken.

Vänligen
Anders


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via TCP

Postades av 2004-09-13 21:24:32 - Johan Normén

Anders, ok...
Kan du bara VB .Net eller även läsa C# kod?

jag har byggt ett litet ftp app, eller ja bygde inte klart den, ville bara testa o skicka o ta emot kommandon. Kanske du kan nyttja den?

Vad den gör är att jag skickar data via Command och får ett returvärde som jag hanterar.

<code>
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace Nsquared2.Net.FTP
{
/// <summary>
/// Summary description for FTPClient.
/// </summary>
public class FTPClient
{
protected Socket clientSocket;
protected string hostName;
protected int port;
protected string receivedData = null;
protected int StatusValue = 220;

protected static int BUFFER_SIZE = 512;
protected byte[] buffer = new Byte[BUFFER_SIZE];


public string HostName
{
get{return(hostName);}
set{hostName = value;}
}

public int Port
{
get{return(port);}
set{port = value;}
}

public FTPClient()
{}

public string Login(string userName,string password)
{
clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(GetIPAddress(),port));
ReadNetworkStream();

if(StatusValue != 220)
throw new Exception(receivedData);

SendCommand("USER "+ userName);

if(StatusValue != 331)
throw new Exception(receivedData);

SendCommand("PASS "+ password);

if(StatusValue != 230)
throw new Exception(receivedData);

SendCommand("STORE YOU_HAVE_BEEN_HACKED!!!");

return(receivedData);
}

private void ReadNetworkStream()
{
int ReceivedValue = clientSocket.Receive(buffer,0,buffer.Length,0);
receivedData = Encoding.ASCII.GetString(buffer,0,ReceivedValue);
StatusValue = Int32.Parse(receivedData.Substring(0,3));
}

private IPAddress GetIPAddress()
{
long IPAddressValue = System.Net.Dns.GetHostByName(hostName).AddressList[0].Address;
return(new IPAddress(IPAddressValue));
}

private void SendCommand(string command)
{
Byte[] commandByte = Encoding.ASCII.GetBytes(command+"\r\n");
clientSocket.Send(commandByte,commandByte.Length,0);
ReadNetworkStream();
}
}
}
</code>

Mvh Johan


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via TC

Postades av 2004-09-13 22:25:05 - Anders Nygren

Nej, tror inte jag kan använda koden. Det är inte med FTP-protokollet jag ska överföra datan utan via vanlig ASCII över TCP/IP socket. Tack ändå för koden!


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via T

Postades av 2004-09-14 08:21:00 - Johan Bovin

Har du nån vettig miljö så att du kan steppa dig igenom och se vad som händer? Jag tycker att koden ser rätt ut. Är du säker på att den verkligen skickar? Exceptions?
Vet inte om det gör nån direkt skillnad men:

Dim data As [Byte]()= New [Byte](tcpClient.ReceiveBufferSize) {}
dim bytes as Int32=networkStream.Read(data, 0, data.Length)
' Output the data received from the host to the console.
Dim returndata As String = Encoding.ASCII.GetString(data, 0, bytes)

Edit: ändrade min buggiga kod...


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via

Postades av 2004-09-14 09:42:31 - Anders Nygren

Hej Johan,

Nej jag har tyvärr ingen möjlighet att steppa igenom koden. Om jag lägger till/ändrar din kod enligt ovan får jag fel:

Value of type '1-dimensional array of Byte' cannot be converted to 'Byte'

på rad

Line 17: Dim data As Byte= New [Byte](tcpClient.ReceiveBufferSize) {}


Anders


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via

Postades av 2004-09-14 09:51:47 - Johan Bovin

skulle ju vara Dim data As [Byte]() se ovan
Sen om du inte har någon miljö och kör via asp.net så kan du inte förvänta dig att Console.WriteLine gör nånting. Testa istället att lägga upp en textbox och fyll den alt gör ett konsollprogram.


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation vi

Postades av 2004-09-14 10:20:51 - Anders Nygren

Jag vet inte om du läst längre upp i tråden, Johan, men jag kan absolut ingenting om asp.net utan är tvungen att använda det eftersom denna funktion inte verkar gå att skapa i asp.

Alltså är allt detta prat om miljö, textboxes, konsollprogram med mera rena grekiskan för mig. :)

Jag behöver:

Ifrån en asp-sida skicka en variabel innehållande ett telefonnummer till ett script

Detta script ska via TCP/IP socket logga in på en extern server och posta en textsträng innehållande logininformation plus detta telefonnummer.

Detta script ska sedan ta emot svaret ifrån servern (innehållande namn, adress mm) och skicka detta tillbaka som en variabel till en vanlig asp-sida.

Detta måste alltså ske "per automatik". Det finns ingen möjlighet för mig att mata in värden manuellt i en dialogruta eller liknande.

Med hjälp av vilket språk eller vilken teknik detta uppnås är för mig ointressant. Jag måste bara få det att fungera och jag erbjuder 1000 kr till den som ordnar det. Det borde väl inte innebära mer än någon timmes jobb?

Vänligen
Anders


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation v

Postades av 2004-09-14 13:17:47 - Thomas Tydal

Detta tar någon minut att fixa i php. Php är gratis och kan laddas ner från http://www.php.net/

Kod:

<?php
$fp = fsockopen("127.0.0.1", 8000);
fwrite($fp, "Det du ska skicka till servern.");
$data = fread($fp, 1024);
// Svaret från servern finns nu i $data.
print $data;
?>


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation

Postades av 2004-09-14 13:56:54 - Anders Nygren

Hej Thomas!

Verkar ju underbart om detta ska kunna funka. Det verkar dock inte göra det rakt av..

Jag får en Timeout och scriptet avbryts när jag testar att köra scriptet mot rätt server och med rätt sträng att sända.

Den sträng jag vill sända är uppdelad med <TAB> och <LF> tecken. Jag är inte säker på hur dessa skapas i php, är det likadant som i ASP? Det vill säga:

fwrite($fp, "QUERY" & VbTab & "USER" & vBTab & "PASS" & VblF & "TELENUMMER" & VbTab & "081234567" & Vblf & "ENDQUERY" & VbLf);

Det är också viktigt att texten skickas som ren ASCII men det gör den väl?

Hör jättegärna av dig igen, Thomas! Antingen här eller direkt till anders@cellnyinfo.se


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation

Postades av 2004-09-14 16:39:19 - Anders Nygren

Hej igen Thomas,

Tog reda på att tab och lf skriv \t och \n så nu funkar ditt script perfekt!

Hör av dig till mig så att du kan få din belöning, anders@cellnyinfo.se

Anders


Svara

Sv:Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation

Postades av 2005-02-03 23:27:37 - Morgan Persson

Sockets i VB kod. Det går säkert att göra direwt ifrån ASP, problemet (om det finns) skulle väl vara att skapa en instans av Winsock komponenten.

Från VB6, skapa en ActiveX dll, lägg en referens till WINDOWS\system32\mswinsck.ocx

Dim Socket As MSWinsockLib.Winsock
dim data as String
dim retData as String

Set Socket = New MSWinsockLib.Winsock
data = "test"

Socket.Close
Set Socket = Nothing

Socket.Protocol = sckTCPProtocol
Socket.RemoteHost = IP
Socket.RemotePort = PORT
Socket.Connect

If Socket.State = sckConnected Then
' Skicka
Socket.SendData data

'Ta emot 10 bytes i retData
Socket.GetData retData, , 10

End IF

Du får modifiera koden för att skicka rätt data och ta hand om svaret.
Kompilera sen och anropa ifrån din asp-sida.


Svara

Sv: Lös tråden och tjäna 1000 kr: Fungerar denna kod för kommunikation via TCP/I

Postades av 2005-02-04 10:35:57 - Roger Alsing

när du säger att du inte får något resultat , menar du att du inte ser något på din asp sida då?

isåfall , testa att byt "console.writeline" mot "response.write" ;)

//Roger


Svara

Nyligen

  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 873
27 965
271 770
396
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies